A.Erasing Zeroes
题解:暴力即可,统计区间1的0。
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t; 5 char s[110]; 6 int main() 7 { 8 scanf("%d",&t); 9 while(t--) 10 { 11 int ans = 0; 12 scanf(" %s",s); 13 int len = strlen(s); 14 bool flag = true; 15 for(int j = 0,i = 0; i < len; i++) 16 { 17 if(s[i] == '1' && s[i+1] == '0' && i+1 < len && flag) j = i,flag = false; 18 if(s[i] == '0' && s[i+1] == '1' && i+1 < len && !flag) ans += i-j,flag = true; 19 } 20 printf("%d ",ans); 21 } 22 return 0; 23 }
B.National Project
题解:贪心思想,坏天气小于好天气,之间开工,好天气小于坏天气输出的时候要注意比较和路的长度。
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t; 5 ll n,g,b,ans; 6 int main() 7 { 8 std::ios::sync_with_stdio(false); 9 cin.tie(0); 10 cin>>t; 11 while(t--) 12 { 13 ll t = 0; 14 ans = 0; 15 cin>>n>>g>>b; 16 t = (n+1)/2; 17 if(b <= g) 18 { 19 cout<<n<<' '; 20 } 21 if(b > g) 22 { 23 ll tt = t%g; 24 if(tt) ans = (t/g)*(g+b)+tt; 25 else ans = (t/g)*(b+g) - b; 26 cout<<max(ans,n)<<' '; 27 } 28 } 29 return 0; 30 }
C.Perfect Keyboard
题解:开空间存相邻的,扫一次暴力判断
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int dis[26][26]; 5 vector<int>v[30]; 6 int ans[30],idx=0; 7 int q[30]; 8 int vis; 9 void dfs(int x,int fa) //dfs(i,-1) 10 { 11 q[x]=1; 12 ans[++idx]=x; 13 int L = v[x].size(); 14 for(int i = 0; i < L; ++i) 15 { 16 if(v[x][i]==fa) 17 continue; 18 if(q[v[x][i]]) 19 { 20 vis=-1; 21 continue; 22 } 23 dfs(v[x][i],x); 24 } 25 } 26 int main() 27 { 28 int t; 29 scanf("%d",&t); 30 while(t--) 31 { 32 idx=0; 33 string s; 34 cin>>s; 35 memset(dis,0,sizeof dis); 36 int len = s.size(); 37 for(int i=0; i<len-1; i++) 38 { 39 int a=s[i]-'a',b=s[i+1]-'a'; 40 dis[a][b]=dis[b][a]=1; 41 } 42 vis=0; 43 for(int i=0; i<26; i++) 44 { 45 int num=0; 46 v[i].clear(); 47 q[i]=0; 48 for(int j=0; j<26; j++) 49 { 50 if(i==j) continue; 51 if(dis[i][j]==1) v[i].push_back(j),num++; 52 } 53 if(num>2) vis=-1; 54 } 55 if(vis==-1) puts("NO"); 56 else 57 { 58 for(int i=0; i<26; i++) 59 { 60 if(v[i].size()==0) 61 { 62 ans[++idx]=i; 63 q[i]=1; 64 } 65 else if(v[i].size()==1&&q[i]==0) dfs(i,-1); 66 } 67 for(int i=0; i<26; i++) 68 if(!q[i]) vis=-1; 69 if(vis==-1) puts("NO"); 70 else 71 { 72 printf("YES "); 73 for(int i=1; i<=26; i++) printf("%c",'a'+ans[i]); 74 puts(""); 75 } 76 } 77 } 78 }