首页 > 代码库 > CONTEST45 呵呵呵呵呵
CONTEST45 呵呵呵呵呵
题目质量差评!为什么不给数据范围!
A.乘积最大3
题目:http://dev.luogu.org/problem/show?pid=2172
题解:sb题,均值定理。
代码:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set>10 #include<queue>11 #include<string>12 #define inf 100000000013 #define maxn 1000000014 #define maxm 500+10015 #define eps 1e-1016 #define ll long long17 #define pa pair<int,int>18 #define for0(i,n) for(int i=0;i<=(n);i++)19 #define for1(i,n) for(int i=1;i<=(n);i++)20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)22 #define mod 100000000723 using namespace std;24 inline ll read()25 {26 ll x=0,f=1;char ch=getchar();27 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}28 while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}29 return x*f;30 }31 ll n,m,tmp,a[maxn];32 int main()33 {34 freopen("input.txt","r",stdin);35 freopen("output.txt","w",stdout);36 n=read();m=read();37 for1(i,m)a[i]=n/m;38 tmp=n-(n/m)*m;39 for3(i,m,m-tmp+1)a[i]++;40 for1(i,m-1)printf("%lld ",a[i]);41 printf("%lld\n",a[m]);42 return 0;43 }
B.刮油漆
题目:http://dev.luogu.org/problem/show?pid=U155
题解:先差分算出每个点的高度,然后单调栈搞掉。
不知道哪写残了一直WA,没AK真不爽。。。
代码:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set>10 #include<queue>11 #include<string>12 #define inf 100000000013 #define maxn 1000000+100014 #define maxm 500+10015 #define eps 1e-1016 #define ll long long17 #define pa pair<int,int>18 #define for0(i,n) for(int i=0;i<=(n);i++)19 #define for1(i,n) for(int i=1;i<=(n);i++)20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)22 #define mod 100000000723 using namespace std;24 inline int read()25 {26 int x=0,f=1;char ch=getchar();27 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}28 while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}29 return x*f;30 }31 int n,ans,mx,top,a[maxn],b[maxn],sta[maxn];32 int main()33 {34 freopen("input.txt","r",stdin);35 freopen("output.txt","w",stdout);36 n=read();37 for1(i,n)38 {39 int x=read(),y=read();40 a[x]++,a[y+1]--;41 if(y+1>mx)mx=y+1;42 }43 for1(i,mx)b[i]=b[i-1]+a[i];44 ans=mx;45 sta[top=1]=0;46 for1(i,mx)47 {48 while(top>1&&sta[top]>b[i])top--;49 if(sta[top]==b[i])ans--;else sta[++top]=b[i];50 }51 printf("%d\n",ans);52 return 0;53 }
C.选学霸
题目:http://dev.luogu.org/problem/show?pid=2170
题解:并查集完了之后背包,怎么昨天一天做了两道这种题?
代码:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set>10 #include<queue>11 #include<string>12 #define inf 100000000013 #define maxn 1000000+100014 #define maxm 500+10015 #define eps 1e-1016 #define ll long long17 #define pa pair<int,int>18 #define for0(i,n) for(int i=0;i<=(n);i++)19 #define for1(i,n) for(int i=1;i<=(n);i++)20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)22 #define mod 100000000723 using namespace std;24 inline int read()25 {26 int x=0,f=1;char ch=getchar();27 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}28 while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}29 return x*f;30 }31 int n,m,k,ans,tot,sum,fa[maxn],a[maxn],s[maxn];32 bool f[maxn];33 inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}34 int main()35 {36 freopen("input.txt","r",stdin);37 freopen("output.txt","w",stdout);38 n=read();k=read();m=read();39 for1(i,n)fa[i]=i;40 for1(i,m)41 {42 int x=find(read()),y=find(read());43 if(x!=y)fa[x]=y;44 }45 for1(i,n)s[find(i)]++;46 for1(i,n)if(s[i])a[++tot]=s[i];47 f[0]=1;48 for1(i,tot)49 {50 for3(j,sum,0)51 if(f[j])f[j+a[i]]=1; 52 sum+=a[i];53 } 54 for3(i,k,1)if(f[i]){ans=i;break;}55 for2(i,k,n)if(f[i]){if(abs(i-k)<k-ans)ans=i;break;}56 printf("%d\n",ans);57 return 0;58 }
这场比赛没有好好做,因为看起来都是些sb题。。。
CONTEST45 呵呵呵呵呵
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。