Gym 101086 A,F,G,H,L 五个水题

来源:互联网 发布:linux yum安装jdk1.7 编辑:程序博客网 时间:2024/06/11 01:05


题目链接:http://codeforces.com/gym/101086


A 、

#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const long long INF=100000000000+5;int main(){int t,n;int ww;char cc;scanf("%d",&t);while(t--){long long LL=0; long long RR=INF;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d %c",&ww,&cc);if(cc=='+'){LL+=ww+25;}else{RR=min(RR,ww+25+LL);}}long long ans=RR-LL;if(ans<0)ans=0;printf("%lld\n",ans);}return 0;}

F、

#include<iostream>#include<cstdio>#include<set>using namespace std;char s[10];int arr[10];bool one(int a,int b){set<int> pp;for(int i=0;i<7;i++)if(i!=a && i!=b)pp.insert(arr[i]);if(arr[a]+arr[b]<=5)pp.insert(arr[a]+arr[b]);if(pp.size()==5)return true;return false;}bool two(int a,int b,int c,int d){set<int> pp;for(int i=0;i<7;i++)if(i!=a && i!=b && i!=c && i!=d)pp.insert(arr[i]);if(arr[a]+arr[b]<=5)pp.insert(arr[a]+arr[b]);if(arr[c]+arr[d]<=5)pp.insert(arr[c]+arr[d]);if(pp.size()==5)return true;return false;}int main(){int t;bool flag;scanf("%d",&t);while(t--){scanf("%s",&s);for(int i=0;i<7;i++)arr[i]=s[i]-'A'+1;flag=false;for(int i=0;i<7;i++)for(int j=i+1;j<7;j++)if(one(i,j))flag=true;if(!flag){for(int i=0;i<7;i++){for(int j=i+1;j<7;j++){for(int k=j+1;k<7;k++){for(int l=k+1;l<7;l++){if(two(i,j,k,l))flag=true;if(two(i,k,j,l))flag=true;if(two(i,l,k,j))flag=true;}}}}}if(flag)printf("YES\n");elseprintf("NO\n");}return 0;}


G、

#include<cstdio>#include<iostream>using namespace std;int n;char map[3][105*3];int dir[][2]={0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};int dfs(int x,int y){int cnt=0;for(int i=0;i<8;i++){if(map[x+dir[i][0]][y+dir[i][1]]=='*')cnt++;}return cnt;}int main(){int t;scanf("%d",&t);int ans=0;while(t--){scanf("%d",&n);ans=0;for(int i=0;i<3;i++)scanf("%s",&map[i]);for(int i=1;i<3*n;i+=3){if(map[1][i]=='X')ans=max(ans,dfs(1,i));}printf("%d\n",ans*4);}return 0;}


H、

#include<cstdio>using namespace std;int main(){int t;int a,b,ans;scanf("%d",&t);while(t--){scanf("%d%d",&a,&b);if(a>b)ans=a;elseans=b;printf("%d\n",ans*ans);}return 0;}


L、

#include<cstdio>using namespace std;int isprime[]={0,0,1,1,0,   1,0,1,0,0,   0,1,0,1,0,   0,0,1,0,1,   0,0,0,1,0,   0,0,0,1,0};int ans[100005];int judge(int x){int cnt=0;while(x){if(x%2==1)cnt++;x/=2;}if(isprime[cnt])return 1;elsereturn 0;}int main(){ans[0]=0;for(int i=1;i<=100000;i++){if(judge(i)){ans[i]=ans[i-1]+1;//printf("%d\n",i);}elseans[i]=ans[i-1];}int t,l,r;scanf("%d",&t);while(t--){scanf("%d%d",&l,&r);int num=0;if(l!=0)num=ans[l-1];printf("%d\n",ans[r]-num);}return 0;}