您的位置:首页 > 其它

7/22 CF#173(div2)

2013-07-23 10:57 405 查看
这次cf做的实在差劲,各种思维上错误,反省继续努力!

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: