2016 Al-Baath University Training Camp Contest-1(gym101028)
2016-07-12 20:41
417 查看
A
Codeforces Rating
题意:给定n和m,以及n个数,问这n个数之和加上1500是否等于m。
B
Bonapity
题意:p等同于b,i等同于e,且不分大小写,给定a,b两个字符串,问它们是否相等。
C
A or B Equals C
题意:A|C==B,给定A,B的二进制,问C有多少种可能,答案mod1e9+7。
D
X and paintings
题意:给定n×m的方格,q条命令(q<=100),x1 y1 x2 y2 c,从左上角x1,y1到右下角x2,y2涂成c,不曾涂色的输出'.'。
思路:暴力
E
Teams
题意:n所大学分别有ai个人参赛,要求统一队伍人数,且相同学校才能组队,希望队伍数最小且每人都必须参赛,问每队人数和队伍数。
思路:求n个数的gcd
F
Good Words
题意:给定a,b两个字符串,b的length==4。当b为a的字串,a被认为是good;当a插入一个字符能成为good,a被认为是almost good;否则为none。问a是什么。
思路:用string的find函数判断一下即可
G
The Tower of Evil
题意:看题目note里的图就能明白了
思路:分析一下图,特判m=2的情况
H
The Endless River
题意:环形河有n米,D移动d米每分,R移动r米每分,每分末D和R都会做一个标记,问最早在第几分钟D和R的标记重合。
思路:暴力
I
March Rain
题意:在一条带子上遮洞,带子上有n个洞,可以买k条布,问要遮住所有洞,布的长度最少为多少
思路:二分
J
X and Beasts
题意:路上有n家武器升级商店,每家分别能买ai点能量用来升级。能升几级取决于ai能被2的几次方整除,如6能被2整除,so能升1级,8能被8整除能升3级。且所买的能量必须严格递增,问武器最多能有几级
思路:DP,dp[i]代表1到i武器的最高级数,b[i]代表商店i的能量能升的级数。状态转移方程:dp[i]=max(dp[i],dp[j]+b[i]);
Codeforces Rating
题意:给定n和m,以及n个数,问这n个数之和加上1500是否等于m。
/************************************************************************* File Name: A.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 12时57分18秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; int main(){ int t,n,m,sum,i,x; while(~scanf("%d",&t)){ while(t--){ sum=1500; scanf("%d%d",&n,&m); for(i=0;i<n;++i){ scanf("%d",&x); sum+=x; } if(sum==m)puts("Correct"); else puts("Bug"); } } }
B
Bonapity
题意:p等同于b,i等同于e,且不分大小写,给定a,b两个字符串,问它们是否相等。
/************************************************************************* File Name: B.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 12时57分28秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; const int N=110; char a ,b ; int main(){ int t,len1,len2,i; while(~scanf("%d",&t)){ while(t--){ scanf("%s%s",a,b); len1=strlen(a); len2=strlen(b); if(len1==len2){ bool flag=0; for(i=0;i<len1;++i){ a[i]=tolower(a[i]); b[i]=tolower(b[i]); if(a[i]==b[i] || (a[i]=='p' && b[i]=='b') || (a[i]=='b' && b[i]=='p') || (a[i]=='i' && b[i]=='e') || (a[i]=='e' && b[i]=='i'))continue; else flag=1; } if(flag)puts("No"); else puts("Yes"); }else puts("No"); } } }
C
A or B Equals C
题意:A|C==B,给定A,B的二进制,问C有多少种可能,答案mod1e9+7。
/************************************************************************* File Name: C.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 12时57分48秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; const int N=110,mod=1e9+7; char a ,b ; int main(){ int t,n,i; while(~scanf("%d",&t)){ while(t--){ scanf("%d%s%s",&n,a,b); //cout<<a<<endl<<b<<endl; ll ans=1; for(i=0;i<n && ans;++i){ if(a[i]=='1'){ if(b[i]=='1')ans=(ans*2)%mod; else ans=0; } } if(ans)printf("%I64d\n",ans); else puts("IMPOSSIBLE"); } } }
D
X and paintings
题意:给定n×m的方格,q条命令(q<=100),x1 y1 x2 y2 c,从左上角x1,y1到右下角x2,y2涂成c,不曾涂色的输出'.'。
思路:暴力
/************************************************************************* File Name: D.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 12时58分04秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; const int N=110; char mp ; int main(){ int t,n,m,q,i,j,x1,y1,x2,y2; char c[2]; while(~scanf("%d",&t)){ while(t--){ scanf("%d%d%d",&n,&m,&q); Mem0(mp); while(q--){ scanf("%d%d%d%d%s",&x1,&y1,&x2,&y2,c); for(i=x1;i<=x2;++i) for(j=y1;j<=y2;++j) mp[i][j]=c[0]; } for(i=1;i<=n;++i){ for(j=1;j<=m;++j) if(mp[i][j])printf("%c",mp[i][j]); else printf("."); puts(""); } } } }
E
Teams
题意:n所大学分别有ai个人参赛,要求统一队伍人数,且相同学校才能组队,希望队伍数最小且每人都必须参赛,问每队人数和队伍数。
思路:求n个数的gcd
/************************************************************************* File Name: E.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 12时58分21秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; int main(){ int t,n,i,a,b; while(~scanf("%d",&t)){ while(t--){ scanf("%d%d",&n,&a); int sum=a; for(i=1;i<n;++i){ scanf("%d",&b); a=__gcd(a,b); sum+=b; } printf("%d %d\n",a,sum/a); } } }
F
Good Words
题意:给定a,b两个字符串,b的length==4。当b为a的字串,a被认为是good;当a插入一个字符能成为good,a被认为是almost good;否则为none。问a是什么。
思路:用string的find函数判断一下即可
/************************************************************************* File Name: F.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 14时06分46秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; int main(){ ios::sync_with_stdio(0); int t,i,j; string a,b,c; while(cin>>t){ while(t--){ cin>>a>>b; //i=a.find(b,0);cout<<"i="<<i<<endl; if(a.find(b,0)!=-1)cout<<"good\n"; else{ bool flag=0; for(i=0;i<4 && !flag;++i){ c=""; for(j=0;j<4;++j){ if(i==j)continue; c+=b[j]; } //cout<<"c="<<c<<endl; if(a.find(c,0)!=-1)flag=1; } if(flag)cout<<"almost good\n"; else cout<<"none\n"; } } } }
G
The Tower of Evil
题意:看题目note里的图就能明白了
思路:分析一下图,特判m=2的情况
/************************************************************************* File Name: G.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 14时21分10秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; int main(){ int t,n,m,p,a,b; while(~scanf("%d",&t)){ while(t--){ scanf("%d%d%d",&n,&m,&p); if(n>m){ n-=m; a=(n+m-2)/(m-1)+1; b=n%(m-1); }else a=1,b=n-1; if(m==2 && a!=1)a++; if(a%2){ if(b+1==p)puts("Yes"); else puts("No"); }else{ if(m-b==p)puts("Yes"); else puts("No"); } } } }
H
The Endless River
题意:环形河有n米,D移动d米每分,R移动r米每分,每分末D和R都会做一个标记,问最早在第几分钟D和R的标记重合。
思路:暴力
/************************************************************************* File Name: H.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 14时59分01秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; const int N=1e5+10; bool fd ,fr ; int main(){ int t,n,d,r,i,ans,pd,pr; while(~scanf("%d",&t)){ while(t--){ scanf("%d%d%d",&n,&d,&r); Mem0(fd),Mem0(fr); ans=1; pd=d%n,pr=r%n; fd[pd]=1,fr[pr]=1; while(!fd[pr] && !fr[pd]){ pd=(pd+d)%n,pr=(pr+r)%n; fd[pd]=1,fr[pr]=1; ans++; } printf("%d\n",ans); } } }
I
March Rain
题意:在一条带子上遮洞,带子上有n个洞,可以买k条布,问要遮住所有洞,布的长度最少为多少
思路:二分
/************************************************************************* File Name: I.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 16时01分50秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; const int N=1e5+10; int a ; int main(){ int t,n,k,i,ans; while(~scanf("%d",&t)){ while(t--){ scanf("%d%d",&n,&k); for(i=0;i<n;++i)scanf("%d",a+i); int low=1,high=(a[n-1]+k-1)/k,mid; //cout<<"low="<<low<<" high="<<high<<endl; while(low<=high){ mid=(low+high)>>1; //cout<<"mid="<<mid<<endl; int cnt=1,pos=a[0]; for(i=1;i<n;++i) if(a[i]-pos+1>mid)pos=a[i],cnt++; //cout<<"cnt="<<cnt<<endl; if(cnt>k)low=mid+1; else high=mid-1,ans=mid; //cout<<"low="<<low<<" high="<<high<<endl; } printf("%d\n",ans); } } }
J
X and Beasts
题意:路上有n家武器升级商店,每家分别能买ai点能量用来升级。能升几级取决于ai能被2的几次方整除,如6能被2整除,so能升1级,8能被8整除能升3级。且所买的能量必须严格递增,问武器最多能有几级
思路:DP,dp[i]代表1到i武器的最高级数,b[i]代表商店i的能量能升的级数。状态转移方程:dp[i]=max(dp[i],dp[j]+b[i]);
/************************************************************************* File Name: J.cpp ID: obsoles1 PROG: LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月12日 星期二 15时18分58秒 ************************************************************************/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<cctype> #include<ctime> #include<cstdlib> #include<string> #include<vector> #include<set> #include<bitset> #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it) #define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x))) #define ll long long #define Mem0(x) memset(x,0,sizeof(x)) #define Mem1(x) memset(x,-1,sizeof(x)) #define MemX(x) memset(x,0x3f,sizeof(x)) #define pb push_back using namespace std; const int N=110; int a ,b ,dp ; int main(){ int t,n,i,j,x; while(~scanf("%d",&t)){ while(t--){ scanf("%d",&n); for(i=0;i<n;++i){ scanf("%d",a+i); b[i]=0; x=a[i]; while(x%2==0)x>>=1,b[i]++; //cout<<"b["<<i<<"]="<<b[i]<<endl; dp[i]=b[i]; } for(i=1;i<n;++i) for(j=0;j<i;++j) if(a[i]>a[j]) dp[i]=Max(dp[i],dp[j]+b[i]); int ans=0; for(i=0;i<n;++i) ans=Max(ans,dp[i]); printf("%d\n",ans); } } }
相关文章推荐
- CF 553E Kyoya and Train
- ideaIU 16注册码分享
- 深度学习(一)人工智能狂潮
- 计算机视觉(Computer Vision,CV)网站及人工智能(Artificial Intelligence,AI)会议
- codeforces 690C3 Brain Network
- Paint使用
- hdu 2124 Repair the Wall
- WinMain函数简介
- linker command faild with exit code
- Foxmail中QQ企业邮箱只能收取不能发送邮件
- HDU 2653 Waiting ten thousand years for Love
- JetBrains dotPeek
- openssh无法登录:server responded "algorithm negotiation failed”
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
- ACM--类Fibonacci 数列--HDOJ 1021--Fibonacci Again--水
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)5进程API/5.2&&5.3wait()和exec()
- 本地yum源搭建及failed to retrieve解决
- 图解RAID 0, RAID 1, RAID 5, RAID 10
- 实用的Portraiture滤镜磨皮教程
- 域名查询工具 Domain Serach