ECJTU13级队员欢乐水题赛——题解
来源:互联网 发布:淘宝奥比岛珠宝表情 编辑:程序博客网 时间:2024/04/29 16:16
A
对于递归写法,显然会TLE,由递归式转化为递推式即可。
#include <cstdio>using namespace std;typedef long long ll;const int mod = 10000007;const int maxn = 100000+5;ll f[maxn];int main(){ int T,tc = 0; scanf("%d",&T); while(T--) { int n; scanf("%lld%lld%lld%lld%lld%lld%d",&f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&n); f[0]%=mod;f[1]%=mod;f[2]%=mod; f[3]%=mod;f[4]%=mod;f[5]%=mod; for(int i = 6;i <= n; ++i) f[i] = (f[i-1] + f[i-2] + f[i-3] + f[i-4] + f[i-5] + f[i-6])%mod; printf("Case %d: %lld\n",++tc,f[n]); } return 0;}
B
模拟题
#include <cstdio>using namespace std;int main(){ int t,tc = 0; scanf("%d",&t); while(t--) { int a,b; scanf("%d%d",&a,&b); int ans=a-b; ans>0?ans:ans*=-1; ans+=a; ans*=4; ans+=19; printf("Case %d: %d\n",++tc,ans); } return 0;}
C
模拟题,暴力即可。
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int maxn = 100+5;int a[maxn];char str[10];int main(){ int t,tc = 0; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); for(int i = 1; i <= n ;++i) scanf("%d",&a[i]); while(m--) { scanf("%s",str); if(str[0]=='P') { int x,y; scanf("%d%d",&x,&y); x++;y++; swap(a[x],a[y]); } else if(str[0]=='R') { for(int i = 1;i <= n/2; ++i) swap(a[i],a[n+1-i]); } else if(str[0]=='S') { int num; scanf("%d",&num); for(int i = 1;i <= n; ++i) a[i] += num; } else if(str[0]=='M') { int num; scanf("%d",&num); for(int i = 1;i <= n; ++i) a[i] *= num; } else { int num; scanf("%d",&num); for(int i = 1;i <= n; ++i) a[i] /= num; } } printf("Case %d:\n",++tc); for(int i=1;i<=n;i++) printf("%d%c",a[i],i == n ?'\n':' '); } return 0;}
D
要求输出满足N*M = W的最小M和与其对应的N
显然当M为2的幂次时,M最小
#include <cstdio>#include <iostream>using namespace std;typedef long long ll;int main(){ int t,tc = 0; scanf("%d",&t); while(t--) { ll n; scanf("%lld",&n); printf("Case %d: ",++tc); if(n&1) printf("Impossible\n"); else { ll ans = 1; while(n%2==0){ ans*=2; n/=2; } printf("%lld %lld\n",n,ans); } } return 0;}
E
熟悉国际象棋的规则就是水题= =
#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>using namespace std;int main(){ int t,tc = 0; scanf("%d",&t); while(t--) { int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); printf("Case %d: ",++tc); x1=abs(x1-x2); y1=abs(y1-y2); if(x1 == y1) ///对角线上 printf("1\n"); else { if(x1%2==y1%2) printf("2\n"); else printf("impossible\n"); } } return 0;}
F
贪心思想的运用= =
尽可能选小的能保证最多
#include <cstdio>#include <algorithm>using namespace std;const int maxn = 50;int a[maxn];int main(){ int T,tc = 0; scanf("%d",&T); while(T--) { int n,p,q; scanf("%d%d%d",&n,&p,&q); for(int i = 0; i < n; ++i) scanf("%d",&a[i]); sort(a,a+n); int ans = 0,cnt = 0; while(q >= 0 && cnt < n) { if(ans >= p || q < a[cnt]) break; q -= a[cnt++]; ++ans; } printf("Case %d: %d\n",++tc,ans); } return 0;}
G
考查结构体排序
#include <cstdio>#include <algorithm>#include <iostream>using namespace std;struct stu{ char name[25]; int sum;};bool cmp(stu x,stu y) { return x.sum<y.sum;}stu s[101];int main(){ int t,tc = 0; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { int x,y,z; scanf("%s%d%d%d",s[i].name,&x,&y,&z); s[i].sum=x*y*z; } printf("Case %d: ",++tc); sort(s+1,s+n+1,cmp); if(s[1].sum == s[n].sum) printf("no thief\n"); else { printf("%s took chocolate from %s\n",s[n].name,s[1].name); } } return 0;}
0 0
- ECJTU13级队员欢乐水题赛——题解
- 【PYC#1 欢乐赛】 题解
- NUPT大二队员淘汰赛1题解
- 欢乐中国行——魅力 安康-
- HTML5应用——欢乐老虎机
- 女生节最欢乐的事——
- HTML5应用——欢乐老虎机
- PYC#1欢乐赛第三题题解
- 欢乐
- 视频网站“牌照门”——几家欢乐几家愁
- 关于《欢乐中国行 —— 东莞厚街》
- 融易投3周年庆——欢乐送豪礼
- 五一欢乐赛——二进制中‘1’的个数
- 欢乐西游通用缓存系统设计—应用Redis
- 北师大珠海分校2016国庆欢乐赛题解
- 北师大珠海分校2017国庆欢乐赛题解
- SDUT14级队员训练1 K - Kickdown
- SDUT14级队员训练1 J - Box
- HDU 2156 分数矩阵
- ACM-简单题之找新朋友——hdu1286
- MFC传递消息的四个步骤
- 单例模式下的double check
- 九度 OJ 1162 I Wanna Go Home 最短路问题
- ECJTU13级队员欢乐水题赛——题解
- c++类中的静态成员和非静态成员
- 智勇三国工作概要
- 用户空间具体是如何处理dpif_upcall ?(2)构造datapath actions
- linux安装软件包相关问题
- FreeType
- JAVA与android 基本数据类型所占的字节数
- 当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程
- 多进程聚写(一)