标签:style blog http color io os ar for 2014
A题 :(字符串查找,水题)
题意 :输入字符串,如果字符串中包含“ Apple”, “iPhone”, “iPod”, “iPad” 就输出 “MAI MAI MAI!”,如果出现 “Sony” 就输出“SONY DAFA IS GOOD!” ,大小写敏感。
思路 : 字符串查找,水题。
1 #include <string.h> 2 #include <stdio.h> 3 #include <iostream> 4 5 using namespace std ; 6 7 char str[20000]; 8 9 int main() 10 { 11 int i; 12 while(gets(str)) 13 { 14 int len=strlen(str); 15 for(i=0; i<len; i++) 16 { 17 if(str[i]==‘A‘ && str[i+1]==‘p‘ && str[i+2]==‘p‘ && str[i+3]==‘l‘ && str[i+4]==‘e‘) 18 printf("MAI MAI MAI!\n"); 19 if(str[i]==‘i‘ && str[i+1]==‘P‘ && str[i+2]==‘h‘ && str[i+3]==‘o‘ && str[i+4]==‘n‘&&str[i+5] == ‘e‘) 20 printf("MAI MAI MAI!\n"); 21 if(str[i]==‘i‘ && str[i+1]==‘P‘ && str[i+2]==‘a‘ && str[i+3]==‘d‘) 22 printf("MAI MAI MAI!\n"); 23 if(str[i]==‘i‘ && str[i+1]==‘P‘ && str[i+2]==‘o‘ && str[i+3]==‘d‘) 24 printf("MAI MAI MAI!\n"); 25 if(str[i]==‘S‘ && str[i+1]==‘o‘ && str[i+2]==‘n‘ && str[i+3]==‘y‘) 26 printf("SONY DAFA IS GOOD!\n"); 27 } 28 } 29 return 0; 30 }
E题 :(博弈)
题意 : n堆珠子,两个人轮流玩儿,每一次,玩家从某一堆中拿出一些扔掉,至少拿出一个,然后对这堆剩下的,玩家可以不再操作,或者可以将剩下的分为两堆,但是每堆至少一个,然后下一个玩家玩儿,如果哪个玩家玩完一把之后没有珠子了。谁就胜了。
思路 : 类似于Nim游戏,就是多了一个分堆的问题,其实无大碍。。。还是那样分。。。。
#include <stdio.h> #include <string.h> #include <iostream> using namespace std ; int main() { int n ; while(scanf("%d",&n)!=EOF) { int a,sum = 0 ; for(int i = 0 ; i < n ;i++) { scanf("%d",&a) ; sum ^= a ; } if(sum)puts("Win") ; else puts("Lose") ; } return 0 ; }
F题 :(BFS)
题意 : 告诉你一个骰子上下左右前后上的数字分别是多少,问转最少多少次能够转到另一个骰子的状态,如果不能输出-1,有前转后转左转右转。
思路 : 记录下当前状态在四种转向方式之后变成什么状态,然后加入队列,看能否转到终态。
#include <stdio.h> #include <string.h> #include <iostream> #include <queue> using namespace std ; int mul[7] = {1,10,100,1000,10000,100000}; struct node { int sta,step ; friend bool operator < (node a,node b) { return a.step > b.step ; } } p,temp1,temp2; int state,a[7] ; bool vis[700000] ; int BFS() { priority_queue<node>Q ; Q.push(p) ; vis[p.sta] = true ; while(!Q.empty()) { temp1 = Q.top() ; Q.pop() ; if(temp1.sta == state) return temp1.step ; int ss = temp1.sta ; for(int i = 0 ; i < 6 ; i++) { a[i] = ss % 10 ; ss /= 10 ; } //左转 p.sta = 0 ; p.step = temp1.step + 1 ; p.sta = 1*a[3]+10*a[2]+100*a[0]+1000*a[1]+10000*a[4]+100000*a[5] ; if(!vis[p.sta]) { Q.push(p) ; vis[p.sta] = true ; } //右转 p.sta = 0 ; p.step = temp1.step + 1 ; p.sta = 1*a[2]+10*a[3]+100*a[1]+1000*a[0]+10000*a[4]+100000*a[5] ; if(!vis[p.sta]) { Q.push(p) ; vis[p.sta] = true ; } //后转 p.sta = 0 ; p.step = temp1.step + 1 ; p.sta = 1*a[4]+10*a[5]+100*a[2]+1000*a[3]+10000*a[1]+100000*a[0] ; if(!vis[p.sta]) { Q.push(p) ; vis[p.sta] = true ; } //前转 p.sta = 0 ; p.step = temp1.step + 1 ; p.sta = 1*a[5]+10*a[4]+100*a[2]+1000*a[3]+10000*a[0]+100000*a[1] ; if(!vis[p.sta]) { Q.push(p) ; vis[p.sta] = true ; } } return -1 ; } int main() { int a; while(scanf("%d",&a)!=EOF) { p.sta = a ; for(int i = 1 ; i < 6 ; i++) { scanf("%d",&a) ; p.sta += a*mul[i] ; } p.step = 0 ; state = 0 ; for(int i = 0 ; i < 6 ; i++) { scanf("%d",&a) ; state += a*mul[i] ; } //printf("%d %d\n",p.sta,state) ; memset(vis,false,sizeof(vis)) ; if(p.sta == state) { puts("0") ; continue ; } int t = BFS() ; printf("%d\n",t) ; } return 0 ; }
2014 ACM/ICPC Asia Regional Xi'an Online(HDU 5007 ~ HDU 5017)
标签:style blog http color io os ar for 2014
原文地址:http://www.cnblogs.com/luyingfeng/p/3971753.html