模拟枚举。。。
A - New Year and Buggy Bot(http://codeforces.com/problemset/problem/908/B)
暴力枚举即可,但是直接手动暴力会非常繁琐,所以用到了STL,next_permutation(a,a+4),这个函数便是对a内元素进行全排列。
1 #include<bits/stdc++.h> 2 #define N 100000 3 #define ll long long 4 using namespace std; 5 int a[4]; 6 char ma[70][70],s[110]; 7 int main() 8 { 9 int n,m,x,y,mx,my,ans=0; 10 cin>>n>>m; 11 for(int i=0;i<n;++i) cin>>ma[i]; 12 for(int i=0;i<n;++i) 13 for(int j=0;j<m;++j) 14 if(ma[i][j]=='S') x=i,y=j; 15 getchar(); 16 cin>>s; 17 for(int i=0;i<4;++i) a[i]=i+48; 18 do 19 { 20 mx=x;my=y; 21 int g=0; 22 for(int i=0;i<strlen(s);++i) 23 { 24 if(s[i]==a[0]) mx--; 25 else if(s[i]==a[1]) mx++; 26 else if(s[i]==a[2]) my--; 27 else my++; 28 if(mx<0||my<0||mx>=n||my>=m) break; 29 if(ma[mx][my]=='#') break; 30 if(ma[mx][my]=='E') 31 { 32 g=1;break; 33 } 34 } 35 ans+=g; 36 }while(next_permutation(a,a+4)); 37 cout<<ans; 38 }
B - Local Extrema
遍历水。
C - The Artful Expedient
按理说是不会T的,原因在于傻子n?后来改成存储出现过的数就好了,而不必一边一边去扫描。。平时常用的东西为什么会突然想不起来用呢…………
D - Quasi-palindrome
去掉后导0判断回文就好了啊。。。似乎就是手残?少打一个等号,wa了五发。。。
E - Generous Kefa
根据题意,看哪种气球给每个人都发了还有剩的,就gg。
F - Five-In-a-Row
这个题没什么难度,搜索即可,只是代码量稍微大点。注意处理好边界条件。然而这个题还是有手残,两个地方的j写成i,怪我咯
G - An abandoned sentiment from past
能不能补进去生成非单调递增的序列。。考虑最好的情况时能不能实现就OK,即把子序列降序加进去,再判断就OK了
1 #include<bits/stdc++.h> 2 #define N 100000 3 #define ll long long 4 using namespace std; 5 int a[200],b[200],vis[200]; 6 int main() 7 { 8 int n,k; 9 cin>>n>>k; 10 memset(a,0,sizeof(a)); 11 memset(b,0,sizeof(b)); 12 memset(vis,0,sizeof(vis)); 13 for(int i=1;i<=n;++i) scanf("%d",&a[i]); 14 for(int i=1;i<=k;++i) scanf("%d",&b[i]); 15 sort(b+1,b+n+1); 16 int hh=n,zha=0; 17 for(int i=1;i<=n;++i) 18 { 19 if(!a[i]) 20 { 21 a[i]=b[hh--]; 22 } 23 } 24 for(int i=1;i<=n;++i) 25 { 26 if((a[i]<=a[i-1]&&i!=1)||(a[i]>=a[i+1]&&i!=n)) 27 { 28 zha=1;break; 29 } 30 } 31 if(zha) printf("YES "); 32 else printf("NO "); 33 return 0; 34 }
H - Score
无脑模拟。。
I - Online Judge
主要问题在读入吧我觉得。。好好用strcat,想用string来着,但是东西都忘了就没用。。。读入的时候就顺便存一个不带空格,换行符,制表符的,先直接比较,再比较去掉空白符的,即可。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<cstdlib> 5 using namespace std; 6 char s1[5005],s2[5005],ss1[5005],ss2[5005]; 7 char temp[5005]; 8 void read(char s[],char ss[]) 9 { 10 gets(temp); 11 while(strcmp(temp,"START")) 12 gets(temp); 13 while(gets(temp)) 14 { 15 if(strcmp(temp,"END")==0) break; 16 if(strlen(temp)) strcat(s,temp); 17 strcat(s," "); 18 } 19 int t=0; 20 for(int i=0;i<strlen(s);++i) 21 { 22 if(s[i]!=' '&&s[i]!=' '&&s[i]!=' ') 23 ss[t++]=s[i]; 24 } 25 ss[t]='