第一题 书页(book)
样例输入
5
2 3
1
样例输出
R
分析:这道题就是一道if题,我是用三目运算符做的,如下
#include
using namespace std;
int main()
{
int n,m,x,y,d;
cin>>n>>x>>y>>d;
cout<<(d%2==x%2?'L':'R');
return 0;
}
第二题 鸡羊同栏(animal)
鸡羊同栏
题目描述小 X 是 CZ 市著名的牧场主。他把 A 只鸡和 B 只羊圈养在一个围栏中。一只正常的鸡有 0 只角、2 条腿;一只正常的羊有 2 只角、4 条腿。某一天,一道 神秘的宇宙射线击中了牧场,导致其中的至多一个动物发生了变异。变异的动物角的只数与腿的条数中至少有一个数量变化了。例如,一只正常的鸡变异成了 3 只角 2 条腿。注意:变异以后动物也不可能有负数个数的角或腿。
小 X 只知道鸡和羊的数量、以及笼子中的动物一共有 C 只角 D 条腿。他想请你帮忙搞清楚变异的情况是什么。
输入
一行 4 个正整数 A,B,C,D,含义见问题描述。
输出
输出共 2 行。
第一行:如果可能是一只鸡变异了,输出它变异后角的只数与腿的条数;否则输出-1。 第二行:如果可能是一只羊变异了,输出它变异后角的只数与腿的条数;否则输出-1。
样例输入
2 2 3 15样例输出
-1
1 7提示提示样例1解释
只可能是一只羊变异成了 1 只角 7 条腿。(0+0+1+2=3,2+2+7+4=15)
样例输入2
2 2 4 12
样例输出2
-1
-1
样例2解释
不可能有动物变异。(0+0+2+2=4,2+2+4+4=12)
分析:可以通过A,B计算出没有变异时的角的个数X=2*B,腿的个数Y=2*A+4*B。因为变异必然会改变角或腿的个数,所以如果X=C并且Y=D,说明不可能有动物变异,输出-1和-1;
否则,则发生里变异,可以计算出变异的动物增加了C-X只角和D-Y条腿。
对于鸡来说,它变异后的角数是C-X,腿数是D-Y+2,所以只需要判断是否有C-X≥0,D-Y+2≥0即可。
对于羊同理,只需要判断是否有C-X+2≥0以及D-Y+4≥0即可
#include
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int x=2*b,y=2*a+4*b,xx=c-x,yy=d-y;
if(xx==0&&yy==0){
cout<<-1<<"\n"<<-1;
return 0;
}
if(a&&xx>=0&&yy+2>=0){
cout<=0&&yy+4>=0){
cout<
第三题 烧菜(cook)
题目描述
小X正在指挥M个机器人做一道家常菜:白灼青菜。把一根青菜烧成菜肴需要两个步骤:洗菜和水煮。显然,一根青菜不可能同时被清洗和水煮,也不可能先被水煮后被清洗。
现在小X告诉你他是怎么指挥的。每当一个机器人空下来:
·如果有青菜还没被清洗,就让这个机器人清洗这根青菜
·否则如果有青菜还没被水煮,就让这个机器人水煮这根青菜
·都没有就让这个机器人关机
现在一共需要把N根青菜烧成菜肴,任何一个机器人清洗都要花A分钟,水煮要花B分钟。小X想请你告诉他多少分钟后所有菜能被烧好。
输入
第一行4个正整数N,M,A,B,含义见问题描述。
输出
输出1行包含一个整数,表示多少分钟后所有菜能被烧好。
样例输入
3 2 9 5
样例输出
23
样例1解释
为了方便说明,把机器人标号为1号机器人和2号机器人;把青菜标号为1号、2号、
3号青菜。实际上,机器人间是没有区别的,青菜间也是没有区别的。
第分钟,1号机器人开始洗1号青菜,2号机器人开始洗2号青菜。
第9分钟,1号机器人开始洗3号青菜,2号机器人开始煮1号青菜。
第14分钟,2号机器人开始煮2号青菜。
第18分钟,1号机器人开始煮3号青菜。
第19分钟,2号机器人关机。
第23分钟,所有菜都被烧好了,1号机器人关机。
分析:经分析数据范围可知,总时长最多为2×1000×(2×1000+2×1000)=8×10^6,可以直接模拟。可以使用两个数组分别保存∶
● 在i时刻有多少台机器人变为空闲状态。
● 在i时刻有多少根菜被清洗完毕,变为"待水煮"状态。另外,保存当前"待清洗"和"待水煮"的菜的根数。
枚举当前时刻i,每次先更新当前"待水煮"的菜的个数,再使用当前空闲的机器人去清洗或水煮剩余的菜即可
参考程序
#include
#define cio ios::sync_with_stdio(0);
using namespace std;
const int maxn=8e6+5;
int f[maxn],fb[maxn];
main(){
cio
int n,m,a,b;
cin>>n>>m>>a>>b;
int ans=0,ca=n,cb=0;
f[1]=m;
for(int i=1;i
第四题 特殊字符 (string)
题目描述
小X接到了一个破译任务。他收到了一个仅包含小写英文字母字符串。
这个字符串十分特殊:在26个英文字母中,潜藏着一个特殊字符,这个字符的实际意义是一个字符串指令!
x个特殊字符相连的含义是:把后面x个字符组成的字符串变成它本身复制x遍的结果。例如,若特殊字符是”w”,那么字符串”wwabc”的破译结果就是”ababc”。
特殊的,若后面字符总数已经不足x个,则字符串改为由后面所有字符组成。例如,若特殊字符是”w”,那么字符串”wwwwabc”的破译结果就是”abcabcabcabc”。
字符串保证连续x个c字符后的x个字符都不会是c字符。例如”aaaba”不会是你要破解的字符串。(也就是特殊字符是不可能被复制的)
但是小X还不知道特殊字符是什么。所以他想问问你,对于每一种可能的特殊字符,破译结果的第K位是什么。
输入
第一行两个整数n,K,分别表示字符串的长度和询问第K位。
第二行一个字符串。
输出
输出一行包含一个长度为26字符串,分别表示若特殊字符是”a”,”b”,...,”z”那么破译结果的第K位是什么。
若破译结果长度小于K,输出”*”。
样例输入
10 10
aaaabbbccd
样例输出
bd**dddddddddddddddddddddd
提示
样例解释
若特殊字符是”a”,破译结果是”bbbcbbbcbbbcbbbccd”
若特殊字符是”b”,破译结果是”aaaaccdccdccd”
若特殊字符是”c”,破译结果是”aaaabbbdd”
若特殊字符是”d”,破译结果是”aaaabbbcc”
若特殊字符是其他,破译结果是”aaaabbbccd”
第五题 数字翻转 (flip)
题目描述
小X在做数学题的时候发现了一类有趣的数字。把这样的数字写在一张不透明的纸上,
倒过来(把纸旋转180度,转轴垂直于纸面)看还是同样的数字。例如69就是这样的数字。
注意,小X用的是以下字体:
现在小X会问你Q次问题,每次问你L到R之间有多少个这样有趣的数字。
输入
第一行为1个正整数Q,表示有Q个问题。
接下来Q行,每行两个整数L和R描述问题。
输出
对于每个问题,依次输出一行一个整数表示答案。
样例输入
3
1 260
3333 8888
1 1234567654321
样例输出
11
17
77758
样例解释
1到260中有趣的数字:2、5、8、22、55、69、88、96、202、222、252
第六题 战士(warrior)
题目描述
小X在玩一款 *** 控战士和怪物战斗的游戏。战士初始生命值为旧、初始攻击力为iA。怪物只有一个,初始生命值为H。 战斗是回合制的,且有一个回合数限制M。如果在M回合内怪物还没有被杀死,小X就失败了。在每个回合,战士先行动,怪物 寻行动。 每当战士行动,小X可以命令战士做以下两件事中的一件: • 攻击,让怪物的生命值减少当前战士攻击力的数值。 ・ 磨刀,让战士攻击力增加dA。 每当怪物行动,怪物会攻击战士,使战士的生命值减少Ci,其中i为回合数。 当一个角色生命值小于等于0时,角色会死亡。 • 如果怪物死亡,那么战斗就结束了。 • 如果战士死亡,会立刻复活,将牛命值和攻击力恢复为初始数值. 现在小X想问问你,最少能在几个回合内杀死怪物。
分析:干不动了
第七题 移动(move)
我做出来答案错误70%,标准答案试过了,TLE80%,CSDN上也找不到答案,那位可以评论发一下。
下期发2020年的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)