130722CF282解题报告
来源:互联网 发布:java数据结构编程 编辑:程序博客网 时间:2024/06/05 01:58
A题:Bit++
水题,就是求n个++或者--的操作后的结果,直接上代码:
#include <iostream>#include <stdio.h>#include <cmath>#include <string>using namespace std;int main(){ int i,j,n; string s; char a; int b=0; cin >> n ; for(i=0; i<n; i++) { cin >> s; int l=s.length(); for(j=0; j<l; j++) { if(s[j]=='+') { b++; break; } if(s[j]=='-') { b--; break; } } } cout << b << endl; return 0;}
B题:Painting Eggs
这道题一开始没读懂,后来读着读着在结合样例,就知道了~~
题意:两个人干活,A和G。A对第i个鸡蛋要ai,G要gi。只要A的总价格加上第i次的价格G总价格<=500.那么就打印A。
code:
#include <iostream>#include <stdio.h>#include <cmath>#include <algorithm>using namespace std ;char a[1000005];int main(){ int i,n; int x,y,sum1=0,sum2=0; cin >> n; for(i=0;i<n;i++) { cin >> x >> y; if(sum1+x-sum2<=500) { sum1+=x; a[i]='A'; } else { sum2+=y; a[i]='G'; } } for(i=0;i<n;i++) cout << a[i]; cout << endl ; return 0;}
C题:XOR and OR
这道题怎么说呢~~~一开始没明白怎么换。后来仔细读题是将取出来的两个相邻的数取异或和或运算。再将两个数代替。那这样就好办了。当两个串长度不相等时,肯定输出NO。当两串相等时,输出YES。当两串长度相等但不相同时,只要两串中都含有1即可~~~
#include <iostream>#include <stdio.h>#include <cmath>#include <cstring>#include <algorithm>using namespace std ;int main(){ string a,b; cin >> a >> b; int l1=a.length(); int l2=b.length(); int i,num1=0,num2=0; if(a==b) cout << "YES" << endl; else if(a=="1") cout << "NO" << endl; else { if(l1!=l2) cout << "NO" << endl; else { for(i=0;i<l1;i++) { if(a[i]=='1') { num1++; } } for(i=0;i<l2;i++) { if(b[i]=='1') num2++; } if(num1&&num2) cout << "YES" << endl; else cout << "NO" << endl; } } return 0;}
D题:Yet Another Number Game
这题是一道博弈题:当n==1时,是巴什博奕。当n=2时,是威佐夫博奕。当n=3时,是nim博弈。
下面分情况讨论一下。
(1)n=1时,巴什博奕。那么当a[0]=0时,先手是必败的。a[0]>0时,先手必胜。
(2)n=2时,威佐夫博奕。由于这道题数据是0—300.数据量很小。直接将奇异局势打表打出来。在将a[0],a[1]与
奇异局势相比较,若(a[0],a[1])是奇异局势,那么先手必败。否则,先手必胜。
(3)n=3时,nim博弈。判断a[0]^a[1]^a[2]的值,若为0,则先手必败。否则先手必胜。
代码如下:
#include <iostream>#include <stdio.h>using namespace std;int a[10];int x[305]= {0},y[305]= {0},vis[666]= {0};int main(){ int n,i,k=0,p=0,q=0,flag=0; cin >> n; for(i=0; i<n; i++) { cin >> a[i]; } for(i=0; i<=300; i++) { if(vis[i]==0) { x[p]=i; y[q]=x[p]+k; k++; vis[x[p]]=1,vis[y[q]]=1; p++,q++; } } if(n==1) { if(a[0]==0) cout << "BitAryo" << endl; else cout << "BitLGM" << endl; } else if(n==2) { if(a[0]>a[1]) swap(a[0],a[1]); for(i=0;i<=p;i++) { if(a[0]==x[i]&&a[1]==y[i]) { flag=1; break; } } if(flag==1) cout << "BitAryo" << endl; else cout << "BitLGM" << endl; } else { if((a[0]^a[1]^a[2])==0) cout << "BitAryo" << endl; else cout << "BitLGM" << endl; } return 0;}
- 130722CF282解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- tju解题报告
- zju1062/pku1095解题报告
- UsacoGate解题报告 --- 序曲
- ZJU 2060 解题报告
- ZJU 1331 解题报告
- ZJU 1115 解题报告
- ZJU1057解题报告
- cocos2d-x 利用CCArmature 实现换装
- zoj3717 Balloon(二分+2SAT)
- Android 判断网络是否可以访问Internet
- 黑马程序员__装饰设计模式
- Redhat Linux安装JDK 1.7
- 130722CF282解题报告
- AlertDialog 与 PopupWindow的 区别
- IIS下PHP的ISAPI和FastCGI比较
- PHP mysql 事务处理实例
- 在线文档查看方案- 易度云查看
- float型与0的比较
- 字符串转换为整数(atoi)
- catwalk carousel
- tty driver(5)