7/22 CF#173(div2)
2013-07-23 10:57
405 查看
这次cf做的实在差劲,各种思维上错误,反省继续努力!
A 题目描述挺多,但直接看数据就可以写的
B 理解错题意了,-1的情况是不可能出现的,只要在每次发鸡蛋的时候比较一下a、b所得money之差即可
C 又犯傻了,竟然把0、0异或当1算的。
D 把三种基本的博弈结合起来,只是n==3时不知道为何按尼姆博弈来算,后经各大神指点明白了。
就是a^b^c==0 则(a-k)^(b-k)^(c-k)!=0 (k>0&&k<=min(a,b,c)) 下面是简单的推导过程,可以自己算一下。
a、b、c对应位上只有两种组合 0 1 0 或 1 0 1 需要从k的二进制第一次出现1开始分析: (a,b,c只是组合,可以相互变位置)
(k的二进制第一次!0位置)
a: 0 0
b: 1 1
c: 0 0
(k的对应位是 0 1 或 1 1)
a: 0 1
b: 1 0
c: 0 1
(k的对应位是 0 1 或 1 1)
a: 1 1
b: 0 0
c: 1 1
(k的对应位是 0 1 或 1 1)
a: 1 0
b: 0 1
c: 1 0
(k的对应位是 0 1 或 1 1)
A 题目描述挺多,但直接看数据就可以写的
#include<iostream> #include<algorithm> #include<cstdio> #include<string> #include<cstring> #include<queue> #include<stack> #include<cmath> using namespace std; int main() { char a[200][10]; int x=0; int n; int i; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; if(a[i][1]=='+') x++; else x--; } cout<<x<<endl; return 0; }
B 理解错题意了,-1的情况是不可能出现的,只要在每次发鸡蛋的时候比较一下a、b所得money之差即可
#include<iostream> #include<algorithm> #include<cstdio> #include<queue> #include<stack> #include<cmath> using namespace std; int a[1000001],b[1000001]; int main() { int n; int i,j; int sum1=0; int sum2=0; cin>>n; for(i=0;i<n;i++) { cin>>a[i]>>b[i]; if(abs(sum1+a[i]-sum2)<=500) { sum1+=a[i]; cout<<"A"; } else { sum2+=b[i]; cout<<"G"; } } return 0; }
C 又犯傻了,竟然把0、0异或当1算的。
#include<iostream> #include<algorithm> #include<cstdio> #include<string> #include<cstring> #include<queue> #include<stack> #include<cmath> using namespace std; char a[1000001]; char b[1000001]; int main() { cin>>a>>b; int len1=strlen(a); int len2=strlen(b); if(len1!=len2) cout<<"NO"<<endl; //只要a、b串长相等,且其中都有1 or 都没有1 就能转化 else { int i,j,k1=0,k2=0; for(i=0;i<len1;i++) { if(a[i]=='1') k1++; } for(i=0;i<len1;i++) { if(b[i]=='1') k2++; } if((k1==0&&k2==0)||(k1!=0&&k2!=0)) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
D 把三种基本的博弈结合起来,只是n==3时不知道为何按尼姆博弈来算,后经各大神指点明白了。
就是a^b^c==0 则(a-k)^(b-k)^(c-k)!=0 (k>0&&k<=min(a,b,c)) 下面是简单的推导过程,可以自己算一下。
a、b、c对应位上只有两种组合 0 1 0 或 1 0 1 需要从k的二进制第一次出现1开始分析: (a,b,c只是组合,可以相互变位置)
(k的二进制第一次!0位置)
a: 0 0
b: 1 1
c: 0 0
(k的对应位是 0 1 或 1 1)
a: 0 1
b: 1 0
c: 0 1
(k的对应位是 0 1 或 1 1)
a: 1 1
b: 0 0
c: 1 1
(k的对应位是 0 1 或 1 1)
a: 1 0
b: 0 1
c: 1 0
(k的对应位是 0 1 或 1 1)
#include<iostream> #include<algorithm> #include<cstdio> #include<string> #include<cstring> #include<queue> #include<stack> #include<cmath> using namespace std; int main() { int n; int a,b,c; cin>>n; if(n==1) { cin>>a; if(a==0) cout<<"BitAryo"<<endl; else cout<<"BitLGM"<<endl; } else if(n==2) { cin>>a>>b; if(a>b) swap(a,b); int t=(b-a)*(sqrt(5.0)+1)/2; if(a==t) cout<<"BitAryo"<<endl; else cout<<"BitLGM"<<endl; } else { cin>>a>>b>>c; if((a^b^c)==0) cout<<"BitAryo"<<endl; else cout<<"BitLGM"<<endl; } return 0; }
相关文章推荐
- codeforce 173 div2 CF训练
- CF 173(div2) B
- 【打CF,学算法——一星级】Codeforces Round #313 (Div. 2) A. Currency System in Geraldion
- CF 356A - 356D #207 (Div. 1)
- CF RCC 2014 Warmup (Div. 2) D. Cunning Gena
- 【CF】174 Div.1 B Cow Program
- 【Author : DS】CF #140 非常好的一套CF题目,DIV1 的E题实在没辙
- CF 199 div2 B题
- 382 Div 2 cf 1
- CF 22 C 带割点的图的构造
- E. President and Roads (CF Round #Pi (Div. 2)) 优先队列的Dij+Tarjan找桥
- CF Round #FF (Div. 2) C DZY Loves Sequences_DP
- cf 208 div2 C
- CF 257 DIV 2 D. Jzzhu and Cities (学会了使用优先队列优化的Dij 和 静态链表存储)
- CF 196 Div 2 D (树形dp)
- cf-Round #214 (Div. 2)-D-Dima and Trap Graph-dfs+二分
- [CF]codeforces round 369(div2)
- CF 280A. Vanya and Cubes(div2)
- CF 226 DIV2 B. Bear and Strings
- cf/Codeforces Round #373 div1-C/div2-E Sasha and Array 线段树 + 维护矩阵快速幂