AtCoder Grand Contest 010
2017-10-26 21:53
435 查看
%%%leoly
%%%Visjiao
%%%Elijahqi
题解可以去看VisJiao大佬的:传送门
AtCoder Grand Contest 010
A.Addition(数学,奇偶性)
B.Boxes (数学)
C.Cleaning(树+结论)
D.Decrementing(数论+gcd+奇偶性)
都是思维题,这我哪会啊。。。Visjiao大佬的题解写的很详细orz
%%%Visjiao
%%%Elijahqi
题解可以去看VisJiao大佬的:传送门
AtCoder Grand Contest 010
A.Addition(数学,奇偶性)
B.Boxes (数学)
C.Cleaning(树+结论)
D.Decrementing(数论+gcd+奇偶性)
都是思维题,这我哪会啊。。。Visjiao大佬的题解写的很详细orz
A.Addition
#include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 100010 inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } int n,tot=0; int main(){ // freopen("a.in","r",stdin); n=read(); for(int i=1;i<=n;++i){ int x=read();if(x&1) tot++; }puts(tot&1?"NO":"YES"); return 0; }
B.Boxes
#include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 100010 inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } int n,aa ,a ,k; ll sum=0; int main(){ // freopen("a.in","r",stdin); n=read(); for(int i=1;i<=n;++i) aa[i]=read(),sum+=aa[i]; ll t=(ll)n*(n+1)/2; if(sum%t){puts("NO");return 0;}k=sum/t; for(int i=2;i<=n;++i) a[i]=aa[i]-aa[i-1];a[1]=aa[1]-aa ; for(int i=1;i<=n;++i) if((k-a[i])%n){puts("NO");return 0;}//x<0也不行啊。 else if((k-a[i])/n<0){puts("NO");return 0;} puts("YES");return 0; }
C.Cleaning
#include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 100010 inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } int n,a ,h ,num=0,du ,fa ; struct edge{ int to,next; }data[N<<1]; bool dfs(int x){ if(du[x]==1) return 1; ll sum=0;int mx=0; for(int i=h[x];i;i=data[i].next){ int y=data[i].to;if(fa[x]==y) continue; fa[y]=x;if(!dfs(y)) return 0;mx=max(mx,a[y]);sum+=a[y]; }if(a[x]>sum) return 0;if(a[x]==sum) return 1; ll res= mx>sum-mx?sum-mx:sum/2;//内部交流最多res对 if(sum-a[x]>res||a[x]-(sum-a[x])<0) return 0; a[x]-=sum-a[x];return 1; } int main(){ // freopen("a.in","r",stdin); n=read();for(int i=1;i<=n;++i) a[i]=read(); for(int i=1;i<n;++i){ int x=read(),y=read();du[x]++;du[y]++; data[++num].to=y;data[num].next=h[x];h[x]=num; data[++num].to=x;data[num].next=h[y];h[y]=num; }if(n==2){puts(a[1]==a[2]?"YES":"NO");return 0;} for(int i=1;i<=n;++i) if(du[i]!=1){ if(!dfs(i)) puts("NO"); else puts(a[i]?"NO":"YES");return 0; } }
D.Decrementing
#include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 100010 inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } int n,a ; ll sum=0; inline int gcd(int x,int y){ return y==0?x:gcd(y,x%y); } int main(){ // freopen("a.in","r",stdin); n=read(); for(int i=1;i<=n;++i) a[i]=read(),sum+=a[i]; if(n%2==0){ puts(sum&1?"First":"Second");return 0; }if(sum%2==0){puts("First");return 0;} while(1){ bool flag=0;int g=0; for(int i=1;i<=n;++i){ if(a[i]==1||(a[i]&1&&flag)){puts("Second");return 0;} if(a[i]&1){a[i]--;flag=1;} g=gcd(g,a[i]); }if((sum/=g)%2==0){puts("Second");return 0;} for(int i=1;i<=n;++i) a[i]/=g; flag=0;g=0; for(int i=1;i<=n;++i){ if(a[i]==1||(a[i]&1&&flag)){puts("First");return 0;} if(a[i]&1){a[i]--;flag=1;} g=gcd(g,a[i]); }if((sum/=g)%2==0){puts("First");return 0;} for(int i=1;i<=n;++i) a[i]/=g; } }
相关文章推荐
- AtCoder Grand Contest 010 B - Boxes 验证解的存在性 2017/2/6
- AtCoder Grand Contest 010 F - Tree Game 博弈论
- Atcoder Grand Contest 010 B - Boxes 差分
- 【Atcoder Grand Contest 010】D - Decrementing——博弈论
- Atcoder Grand Contest 010 C - Cleaning 树贪心(伪)
- AtCoder Grand Contest 010 C - Cleaning 贪心
- Atcoder Grand Contest 010 D Decrementing
- AtCoder Grand Contest 010 B - Boxes 验证解的存在性
- AtCoder Grand Contest 010 D - Decrementing 博弈论
- AtCoder Grand Contest 010 B(差分)
- AtCoder Grand Contest 010 D - Decrementing
- 构造——AtCoder Grand Contest 010 B
- AtCoder Grand Contest 010
- AtCoder Grand Contest 010 E - Rearranging 拓扑排序+贪心
- AtCoder Grand Contest 009 B - Tournament 贪心
- AtCoder Grand Contest 004 D - Teleporter 贪心
- AtCoder Grand Contest 006 E - Rotate 3x3 树状数组
- AtCoder Grand Contest 005F - Many Easy Problems
- AtCoder Grand Contest 013 题解
- AtCoder Grand Contest 013