第五届ACM趣味编程大赛
A 苗童大作战之绝地求生
Description
苗苗最近入坑绝地求生了,这一次她终于苟到了决赛圈,她已经把药都用完了,但马上又要跑毒了。
假设她距离安全区最近的直线距离为 n 米,她的移动速度为 2 米每秒,她想知道如果按照这个方式跑到安全区最需要多少秒。
Input
输入包含一个整数 n (0 < n < 10000), 代表她到安全区的距离。
Output
输出一个整数,代表需要的最少时间。
Sample Input
4
Sample Output
2
注意奇数的时候
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<cmath>
#include<string>
using namespace std;
typedef long long ll;
int main()
{ll n;cin>>n;if(n%2==0)cout<<n/2<<endl;elsecout<<n/2+1<<endl;return 0;
}
C苗童大作战之怪物猎人
Description
苗苗又开始玩一些游戏,这次是RPG游戏。在游戏中,苗苗接受了一个任务:杀死童童所控制的怪物。怪物具有一定的生命值 h2 和一定的攻击力 a2 。苗苗现在拥有 h1 生命值。 此外,她还有两个技能:
1. 燃烧卡路里(Burn my calories),使用此技能,苗苗将会回复 c1 点生命值。
2. 天马流星拳(Pegasus Ryuseiken),使用此技能,苗苗将会对怪物造成 a1 点伤害。
战斗包括多个回合。在每个回合的开始阶段,苗苗可以使用 技能1 或者 技能2,因为苗苗尚未完全领悟到魔法的精髓,所以每回合她只能释放一次技能 。接下来,如果战斗尚未结束,怪物会攻击苗苗,将会对她的造成 a2 点伤害 。当苗苗(或怪物)的生命值降至 0 或更低时,战斗结束。在苗苗释放技能后,战斗可能会结束。
当然,苗苗想想尽快赢得这场战斗。所以她想制定一个策略:让她以最少的回合数赢得战斗。
策略必须是有效的:在杀死怪物之前,苗苗的生命值必须大于0;并且苗苗在释放最后一次技能后,怪物的生命值必须为0或更低。你可以认为苗苗的技能没有使用次数限制,而且她总能获胜。
你能帮助苗苗制定策略吗?
Input
第一行包含三个整数h1, a1, c1 (1 ≤ h1, a1 ≤ 100,2 ≤ c1 ≤ 100)
第二行包含两个整数h2, a2 (1 ≤ h2 ≤ 100, 1 ≤ a2 < c1)
Output
在第一行打印一个整数,代表赢得战斗所需的最少回合数。
然后打印n行。如果苗苗在第i回合使用了技能1,那么第i行输出"Burn my calories!!!!",如果她使用了技能2则输出"Pegasus Ryuseiken!!!!"。
输出不含双引号。如果有多个最佳解决方案,请打印其中任何一个。
Sample Input
10 6 100
17 5
Sample Output
4
Pegasus Ryuseiken!!!!
Burn my calories!!!!
Pegasus Ryuseiken!!!!
Pegasus Ryuseiken!!!!
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<cmath>
#include<string>
#include<deque>
using namespace std;
typedef long long ll;
#define PI acos(-1)
#define MAX 0x3f3f3f
//priority_queue<int,vector<int>,greater<int> >
int main()
{ll h1,a1,c1,a2,h2,ans=0,s[10010]={0},e=0;cin>>h1>>a1>>c1>>h2>>a2;while(h2>0){if(h1<=a2&&a1<h2){//cout<<"Burn my calories!!!!"<<endl;h1+=c1;h1-=a2;s[e++]=2;}else{//cout<<"Pegasus Ryuseiken!!!!"<<endl;h1-=a2;h2-=a1;s[e++]=1;}ans++;}cout<<ans<<endl;for(ll i=0;i<e;i++){if(s[i]==1)cout<<"Pegasus Ryuseiken!!!!"<<endl;elsecout<<"Burn my calories!!!!"<<endl;}return 0;
}
E 苗童大作战之开心农场
Description
童童和苗苗最近迷上了开心农场,可是苗苗总是偷童童的菜,愤怒的童童现在要进行反击了!!!
苗苗的农场是一块无限大的矩形土地(如下图),其黑色部分都被种上了值钱的黑凤梨,白色部分都种上了颜值爆表的猴赛雷。爱美的童童决定选择一个矩形区域偷走其中的猴赛雷。
苗苗的农场(左下角坐标为(1,1))如下:
白色部分与黑色部分都是 1 * 1 的正方形。
童童已经做好了计划,现在她给出了她要偷的矩形区域的左下角点的坐标和右上角点的坐标,现在她想请你帮忙计算一下,她能偷走多少块土地的猴赛雷。
Input
第一行输入两个整数Px1和Py1,分别代表左下角点的横坐标和纵坐标。
第二行输入两个整数Px2和Py2,分别代表右上角点的横坐标和纵坐标。
所有整数均不大于 INT(2147483647)
Output
输出一个整数,代表指定的矩形区域中总共有多少块种猴赛雷的土地。
Sample Input
2 2
4 4
Sample Output
4
是左下角的菜地是(1,1),右面的是(2,1),只有当所求菜地边长都为奇数的时候才会出现两种菜地不同的情况,这种情况下只需要判断最左下角的是什么就好,是白色,该菜地中白色多一个,否则黑色多一个。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<cmath>
#include<string>
using namespace std;
typedef long long ll;
int main()
{ll i,j,a,b,c,d;cin>>a>>b>>c>>d;ll ans=0;ll x,y;x=c-a+1;y=d-b+1;if(x%2!=0&&y%2!=0){if(b%2==0){if(a%2!=0)ans=(x*y)/2+1;elseans=(x*y)/2;}else{if(a%2==0)ans=(x*y)/2+1;elseans=(x*y)/2;}}elseans=(x*y)/2;cout<<ans<<endl;return 0;
}
F苗童大作战之爱洗澡的鳄鱼
Description
童童和苗苗准备邀请小鳄鱼来观看大作战,可是小鳄鱼是出了名的爱洗澡,没有游泳池是请不到小鳄鱼的哟!于是童童和苗苗准备比比谁先请到小鳄鱼,为了公平起见,苗苗和童童画出的泳池底长必须相同。
童童画了一个弧状的游泳池,而苗苗把正六边形的一半用来当作游泳池,可是小鳄鱼觉得洗澡的地方越大越好,那么问题来了,你能告诉小鳄鱼这两个图形的面积吗?
如下图:
x轴上方是童童画的游泳池,为了好看童童用某二元一次方程 y = ax^2 + c 的一部分画出了这段弧,给你二次函数与 x 轴的交点 Px 的绝对值和二次函数与 y 轴的交点 Py, 你能告诉小鳄鱼x轴上方和x轴下方的图形面积吗?
Input
输入两个数 Px 和 Py (0 < Px, Py < 10000)
Output
输出两个数,分别代表 x 轴上方的图形面积和 x 轴下方的图形面积。(保留两位小数)
Sample Input
2 4
Sample Output
10.67 5.20
下面的面积好求一点,就是3个等边三角形的面积,上面的y=ax^2+c,c就是py,将(px,0)代入可以解出a=-py/(px*px),然后求ax^2+c的原函数:1/3ax^3+cx,求出为4/3pxpy.
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<cmath>
#include<string>
#include<deque>
using namespace std;
typedef long long ll;
#define PI acos(-1)
#define MAX 0x3f3f3f
//priority_queue<int,vector<int>,greater<int> >
int main()
{double x,y,ans1,ans2;scanf("%lf%lf",&x,&y);ans2=3*sqrt(3)*x*x/4.0;ans1=x*y*4/3.0;printf("%.2lf %.2lf\n",ans1,ans2);return 0;
}
G 苗童大作战之跳一跳
Description
你们都玩过微信跳一跳吧~ 要知道苗苗和童童可是跳一跳大神呢。可是她们今天被一个新的跳一跳难倒了,你能帮帮她们吗?
游戏规则:
现在有n 个连续且长为 1 的格子,上面标有一些数字,苗苗和童童站在两端。游戏开始,先将两人中间夹着的(包括所站的地方)所有格子都进行翻转(例如中间夹着的格子如果为1 2 3,则变为3 2 1),然后两个人同时往中间跳一步,直到两人面对面或者站在同一格子上为止。 现在她们想知道走到最后这 n 个格子的数字顺序是什么,你能帮帮她们吗?
Input
第一行包含一个整数 n (0 < n < 1000000)
第二行包含 n 个整数,第 i (1 <= i <= n) 个整数代表第 i 个格子上所标的数字。
Output
按照从左到右的顺序输出这n个数,代表翻转之后每个格子上的数字。
Sample Input
2
10 13
Sample Output
13 10
偶数翻转 奇数不翻转注意面对面的情况也要翻转在判断。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef long long ll;
int a[1000010];
int main()
{int n,i,j,t;scanf("%d",&n);for(i=0; i<n; i++)scanf("%d",&a[i]);for(i=0; i<n/2; i++){if(i%2==0){t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;}}for(i=0; i<n; i++)printf("%lld ",a[i]);return 0;
}
H 苗童大作战之跑跑卡丁车
苗苗开始飙车了,苗苗将会穿过一个小区到达终点,已知她现在在 n 位置,终点在 m 位置。这个小区的房子按矩阵样式排列。其楼房的编号为1, 2, 3... 当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排数为3时,排列方式如下
1 2 3
6 5 4
7 8 9
……
当小区排数为6时,排列方式如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 .....
要知道苗苗是一个遵守交通规则的好孩纸,所以她只会横着走或者竖着走,不会在马路上斜着走。可是苗苗的车因为速度实在太快了,她甚至都忘了自己经过了多少栋房子,你能告诉她吗
Input
包含三个整数w、n、m(1 ≤ w, n, m ≤ 10000000),分别表示一排有多少栋楼,苗苗的位置,终点的位置
Output
输出一个整数,代表最少要经过的楼房数。
Sample Input
6 6 14
Sample Output
7
注意有可能是大数到小数走。(1A)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<cmath>
#include<string>
using namespace std;
typedef long long ll;
int main()
{ll w,n,m,i,j,a,b,c,d,aa,bb;cin>>w>>n>>m;ll ans=0;ans=m-n+1;if(n%w==0){a=n/w;aa=w;}else{a=n/w+1;aa=n%w;}if(m%w==0){b=m/w;bb=w;}else{b=m/w+1;bb=m%w;}if(b%2!=0&&a%2!=0){if(a==b)ans=abs(aa-bb)+1;elseans=abs(b-a)+1+abs(aa-bb);//ans=(abs(aa-bb)+1)*(b-a-1)+2;}elseif(b%2==0&&a%2==0){aa=w-aa+1;bb=w-bb+1;if(a==b)ans=abs(aa-bb)+1;elseans=abs(b-a)+1+abs(aa-bb);}elseif(a%2!=0&&b%2==0){bb=w-bb+1;//cout<<a<<" "<<b<<endl3 ;//cout<<aa<<" "<<bb<<endl;ans=abs(b-a)+1+abs(aa-bb);}elseif(a%2==0&&b%2!=0){aa=w-aa+1;ans=abs(b-a)+1+abs(aa-bb);}cout<<ans<<endl;return 0;
}
I 苗童大作战之神之预言
苗童大作战已经接近尾声了,可是消息闭塞的小伙伴们都不知道比赛情况,好奇的他们决定请教万能的上帝,上帝告诉他们骰子知道结果。于是支持苗苗的红队和支持童童的蓝队决定来一场骰子大战,红蓝双方各有三个普通的六面骰子,同时投掷,最后比较大小。
比较的规则如下:
1. 如果三个骰子的点数都一样,称为豹子,如果双方都是豹子,则按点数比大小。
2. 如果只有两个骰子的点数一样,称为对子,如果双方都是对子,则先按对子的点数比大小,对子点数相同的,按剩余骰子的点数比大小。
3. 如果没有一个点数相同,但是从大到小排序后,相邻两个骰子点数只相差 1,我们称之为顺子,如 5 4 3,如果双方都是顺子,则比较最大点数。
4. 其他情况下称为点子,则比较双方的最大点数,最大点数相同的比较第二大,以此类推。
5. 豹子 > 顺子 > 对子 > 点子
好了,让红蓝来一决高下吧,你能帮忙判断一下他们的胜负情况吗?
同时,为了感谢你帮助他们,第一个 做出这个题的同学将会有 神秘奖励
Input
第一行包含一个整数 n ,表示扔骰子的次数。
每次游戏包含两行样例,第一行是红队投掷的三个骰子的点数,第二行是蓝队投掷的三个骰子的点数。
Output
如果是红队赢了,输出"RED",如果是蓝队赢了,输出"BLUE",平局输出"DRAW", 不包含引号。
Sample Input
3
2 5 6
1 3 4
1 2 3
1 2 3
1 5 2
2 4 3
Sample Output
RED
DRAW
BLUE
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
#include<cmath>
#include<string>
using namespace std;
typedef long long ll;
int main()
{ll r[4],b[4],T,i;cin>>T;while(T--){for(i=0;i<3;i++)cin>>r[i];for(i=0;i<3;i++)cin>>b[i];sort(r,r+3);sort(b,b+3);if(r[0]==r[1]&&r[1]==r[2]&&b[0]==b[1]&&b[1]==b[2]){if(r[0]>b[0])cout<<"RED"<<endl;elseif(r[0]<b[0])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}elseif(r[0]==r[1]&&r[1]==r[2])cout<<"RED"<<endl;elseif(b[0]==b[1]&&b[1]==b[2])cout<<"BLUE"<<endl;elseif(b[0]+1==b[1]&&b[1]+1==b[2]&&r[0]+1==r[1]&&r[1]+1==r[2]){if(b[2]>r[2])cout<<"BLUE"<<endl;elseif(b[2]<r[2])cout<<"RED"<<endl;elsecout<<"DRAW"<<endl;}elseif(b[0]+1==b[1]&&b[1]+1==b[2])cout<<"BLUE"<<endl;elseif(r[0]+1==r[1]&&r[1]+1==r[2])cout<<"RED"<<endl;elseif((r[1]==r[0]||r[1]==r[2]||r[0]==r[2])&&(b[1]==b[0]||b[1]==b[2]||b[0]==b[2])){if(r[1]==r[0]&&b[1]==b[0]){if(r[1]>b[1])cout<<"RED"<<endl;elseif(r[1]<b[1])cout<<"BLUE"<<endl;else{if(r[2]>b[2])cout<<"RED"<<endl;elseif(r[2]<b[2])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[1]==r[0]&&b[1]==b[2]){if(r[1]>b[1])cout<<"RED"<<endl;elseif(r[1]<b[1])cout<<"BLUE"<<endl;else{if(r[2]>b[0])cout<<"RED"<<endl;elseif(r[2]<b[0])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[1]==r[0]&&b[2]==b[0]){if(r[1]>b[2])cout<<"RED"<<endl;elseif(r[1]<b[2])cout<<"BLUE"<<endl;else{if(r[2]>b[1])cout<<"RED"<<endl;elseif(r[2]<b[1])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[1]==r[2]&&b[1]==b[0]){if(r[1]>b[1])cout<<"RED"<<endl;elseif(r[1]<b[1])cout<<"BLUE"<<endl;else{if(r[0]>b[2])cout<<"RED"<<endl;elseif(r[0]<b[2])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[1]==r[2]&&b[1]==b[2]){if(r[1]>b[1])cout<<"RED"<<endl;elseif(r[1]<b[1])cout<<"BLUE"<<endl;else{if(r[0]>b[0])cout<<"RED"<<endl;elseif(r[0]<b[0])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[1]==r[2]&&b[2]==b[0]){if(r[1]>b[0])cout<<"RED"<<endl;elseif(r[1]<b[0])cout<<"BLUE"<<endl;else{if(r[0]>b[1])cout<<"RED"<<endl;elseif(r[0]<b[1])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[2]==r[0]&&b[1]==b[0]){if(r[2]>b[1])cout<<"RED"<<endl;elseif(r[2]<b[1])cout<<"BLUE"<<endl;else{if(r[1]>b[2])cout<<"RED"<<endl;elseif(r[1]<b[2])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[2]==r[0]&&b[1]==b[2]){if(r[2]>b[1])cout<<"RED"<<endl;elseif(r[2]<b[1])cout<<"BLUE"<<endl;else{if(r[1]>b[0])cout<<"RED"<<endl;elseif(r[1]<b[0])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}elseif(r[2]==r[0]&&b[2]==b[0]){if(r[2]>b[2])cout<<"RED"<<endl;elseif(r[2]<b[2])cout<<"BLUE"<<endl;else{if(r[1]>b[1])cout<<"RED"<<endl;elseif(r[1]<b[1])cout<<"BLUE"<<endl;elsecout<<"DRAW"<<endl;}}}elseif(r[1]==r[0]||r[1]==r[2]||r[0]==r[2])cout<<"RED"<<endl;elseif(b[0]==b[1]||b[1]==b[2]||b[0]==b[2])cout<<"BLUE"<<endl;else{if(b[2]>r[2])cout<<"BLUE"<<endl;elseif(b[2]<r[2])cout<<"RED"<<endl;else{if(b[1]>r[1])cout<<"BLUE"<<endl;elseif(b[1]<r[1])cout<<"RED"<<endl;else{if(b[0]>r[0])cout<<"BLUE"<<endl;elseif(b[0]<r[0])cout<<"RED"<<endl;elsecout<<"DRAW"<<endl;}}}}return 0;
}
其他的稍后更新~~~
第五届ACM趣味编程大赛相关推荐
- ACM国际编程大赛夺冠,李现和他的队员们一定把这8本书翻烂了
导读:热播剧<亲爱的,热爱的>终于迎来了大结局!除了"霸道总裁+软萌小可爱"的"高甜"偶像剧设定之外,这部剧的不同之处在于,"霸道总裁&q ...
- 第五届趣味编程大赛——F 苗童大作战之爱洗澡的鳄鱼
童童和苗苗准备邀请小鳄鱼来观看大作战,可是小鳄鱼是出了名的爱洗澡,没有游泳池是请不到小鳄鱼的哟!于是童童和苗苗准备比比谁先请到小鳄鱼,为了公平起见,苗苗和童童画出的泳池底长必须相同. 童童画了一个弧状 ...
- 第五届趣味编程大赛——A 苗童大作战之绝地求生
这是一个签到题,但是在后台看到很多人做题时都错了很多遍,其实这个题如果再给一组样例,可能大家就很容易做出来: 5 3 Description 苗苗最近入坑绝地求生了,这一次她终于苟到了决赛圈,她已经 ...
- 第七届ACM趣味编程循环赛 Round #1 - ldq 的遗产题解
题意是给你一定数目的1,2,5分的硬币,让你找出不能被这些硬币表示的最小价值. 标准解法是母函数,这个我算法分享讲堂中讲过, 具体可以看我另一篇博客 生成函数入门 #include <stdio ...
- python 创意编程 全国-关于举办第五届全国青少年创意编程与智能设计大赛的通知...
各省.自治区.直辖市和新疆生产建设兵团科协青少年科技教育工作机构,青少年科技辅导员协会(科技教育协会): 为深入贯彻落实国务院<新一代人工智能发展规划>的任务要求,向广大青少年普及推广编程 ...
- python游戏程序-Python游戏趣味编程
书名:Python游戏趣味编程 定价:69.0 ISBN:9787115538246 作者:童晶 版次:第1版 出版时间:2020-07 内容提要: 本书把趣味游戏开发应用于Python编程教学,通过 ...
- 《Python游戏趣味编程》新书上架了
<Python游戏趣味编程>案例视频 <Python游戏趣味编程>新书上架了,目前京东.淘宝.当当上搜书名就可以找到,比如: https://item.jd.com/12899 ...
- 第五届四川省职工职业技能大赛决赛计算机程序设计员技术文件大纲
第五届四川省职工职业技能大赛决赛 计算机程序设计员技术文件 一.竞赛标准 计算机程序设计员竞赛项目的技术标准,是以<中华人民共和国国家职业标准>中规定的<计算机程序设计员国 ...
- python趣味编程100例-Python游戏趣味编程
书名:Python游戏趣味编程 定价:69.0 ISBN:9787115538246 作者:童晶 版次:第1版 出版时间:2020-07 内容提要: 本书把趣味游戏开发应用于Python编程教学,通过 ...
最新文章
- arduino 智能车组装步骤_【本周福利】arduino从入门、进阶到精通学习资料包(免费滴)...
- 多线程爬虫python_一个简单的多线程Python爬虫
- 涡轮流量计说明书_实际应用中超声波流量计与电磁流量计哪个更好用
- 工作线程AfxBeginThread的使用
- c语言把字符串写入文件,c语言文件读写 | 按字符,按行,按块
- PocketSphinx语音识别系统的编译、安装和使用
- 解决 python中 使用tesserocr,File tesserocr.pyx, line 2401, in tesserocr._tesserocr.image_to_text 报错问题...
- 联名款Redmi K40游戏增强版今日揭晓:神秘女主粉色头发吸睛
- 学python可以做什么职业-学了Python,就能拿下这 7 个高薪的未来职业
- canva画图 图片居中裁剪_男士秋裤,一片式补裆款裁剪图分享给大家。天凉该给家人做秋裤啦...
- php视频教程bt下载,LAMP 兄弟连原创视频光盘镜像下载—精品PHP Linux高清WMV格式视频教程全集...
- sip 时序图_教你如何看懂时序图(小白如何快速轻松的看懂时序图)
- 【安全】【信息搜集】Google Hacking
- 三次样条插值(附完整代码)
- [附源码]java毕业设计网上点餐系统
- 问卷调查小程序功能清单
- Java学习---Linux总结
- 基于模糊聚类和协同过滤的混合推荐系统
- 哪怕荆棘满路,我们仍无畏前行
- python支持wps_python程序的一个应用wps的实例
热门文章
- 微信小程序蓝牙BLE开发——关于进制转换(四)
- Android 如何实现google天气
- 洛谷 P1265 公路修建 题解
- 淘宝接口调用,面向对象
- 波动率和波动率曲面套利
- 计算机还原默认的配置,如何恢复IE浏览器的默认设置?如何还原IE浏览器的默认设置...
- Windows PATH 环境变量的长度限制
- Web时代,电脑用户的求生之路
- 无套路送9部 kindle,价值5400元
- 鸿蒙系统用什么用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...