CSP-J复赛 模拟题3

 

1.匿名信:

题目描述

出于对社会现状的担忧,Alice 决定给市长写一封建议信,考虑到市长的暴脾气,Alice 最终还是决定匿名上书,为了保证自己的绝对神秘,她还会从当天的报纸上将一些单词(或字母)裁剪下来并重新组合,从而得到她想要上书的信件内容。

现在给出报纸中的内容,以及 Alice 想要上书的信件内容,请你判断 Alice 能否从当天的报纸中裁剪得到自己的信件内容?

输入格式

输入第一行,一个数字 T 表示多组数据

接下来 T 组数据,每组数据分两行:

第一行,一个由大小写字母,空格,数字,以及标点符号构成字符串s1​,表示报纸上的文字内容。

第二行,一个由大小写字母,空格,数字,以及标点符号构成字符串 s2​,表示 Alice 所需要的信件内容。

输出格式

输出共 T 行,每行一个 YES 或 NO,表示 Alice 能否从报纸上的文字中裁剪得到自己所需的信件内容。

输入输出样例

输入 #1

4
How much U wanna risk?
ooooooooo!
Rage, rage, against the dying of the light.
right day.
Rage, rage, against the dying of the light.
right day or not.
abcdefg hijk
k j i h g f e d c b a
 

输出 #1

NO
YES
NO
YES
 

说明/提示

样例解释

对于第一组询问,报纸中不存在小写字母 o,所以无法得到想要的信件内容。

对于第二组询问,报纸中可以找到组成信件内容的所有字母与标点符号,所以能够得到想要的信件内容。

对于第三组询问,无法找到两个小写字母 r,所以无法得到想要的信件内容。

数据范围

对于100 % 的数据,保证s1​,s2​ 的长度均不超过2*10^3,T≤10.

2.队列还原:

题目背景

七年级C班的同学们正在为即将到来的大型活动彩排。

题目描述

作为最基本的彩排项目,班主任需要将班里的n名同学排成一排,为了防止今天排好队明天同学们就忘了的情况出现,班主任给了每位同学一个编号ai​,第一次彩排之后,每位同学只需要记住自己左边与右边同学的编号(自己的编号往往是记不住的),第二天再次彩排时就能正确还原出前一天的队形了。

时间到了第二天,不出意外的话果然就出现了意外。每一名同学都记住了昨天排队时自己的左右同学的编号,但已经忘记了自己的号码。现在你的任务是帮助可怜的班主任老师还原出昨天排队的队形。

输入格式

第一行一个整数n,表示班里一共有n名同学。

接下来的n行,每行两个整数l,r,表示每位同学记住的他的左右手同学的编号。

输出格式

输出仅一行,n个数字,从左至右表示第一天彩排时n位同学的编号。

输入输出样例

输入 #1

3
0 5
2 6
5 0
 

输出 #1

2 5 6
 

输入 #2

4
92 31
0 7
31 0
7 141
 

输出 #2

92 7 31 141 
 

说明/提示

样例解释:

在样例II中

排在最左边的同学编号是92,左边没有人,右边同学的编号是7.

编号为7的同学左边同学编号92,右边同学编号为31

依此类推。

数据范围:

对于10%的数据,保证n≤2

对于30%的数据,保证每位同学的编号是1∼n的一个排列

对于70%的数据,保证n≤1000

对于100%的数据,保证n≤10^5, 每位同学的编号在1∼10^6范围内,并且每位同学的编号各不相同。

3.最大公约数:

题目描述

给出闭区间[a,b], 求该区间中所有数字的最大公约数。

输入格式

第一行一个整数T,表示T组测试数据。

接下来每行两个数字a,b表示闭区间[a,b]的左右端点。

输出格式

共T行,每行一个整数,表示区间内所有数字的最大公约数。

输入输出样例

输入 #1

2
1 2
9 9

输出 #1

1
9

说明/提示

数据范围:

对于20%的数据,保证a=b

对于50%的数据,保证1≤a,b≤10^7

对于100%的数据,保证T≤10^5,1≤a≤b≤10^100

4.硬币翻转:

题目描述

桌面上有n枚硬币,你可以将一枚硬币翻转过来,该操作会连带将这枚硬币左右两边相邻的硬币也一起翻转。

譬如现有5枚硬币,分别为

正 反 反 正 正

面朝上的状态,翻转第二枚硬币会将左右两边第一枚、第三枚硬币一起翻转过来,变成

反 正 正 正 正

需要注意的是如果你翻转的是最边上的硬币的话,那么只会翻转两枚硬币。

现在轮到你来玩这个硬币翻转游戏了,请问你是否能够将这n枚硬币全部翻转到正面朝上的状态?

输入格式

输入有多组数据:

第一行,一个整数T,表示一共有T组测试数据

接下来每一组数据,先输入一个n,表示有n枚硬币,接下来n个数字(0或1),数字0表示改硬币反面朝上,1表示正面朝上。

输出格式

输出一共T行,每行回答一个Yes或者No,表示你是否能够将这n个硬币全部翻转到正面朝上的状态。

输入输出样例

输入 #1

3
3
0 1 0
4
0 0 0 0
5
1 0 0 0 0

输出 #1

Yes
Yes
No

说明/提示

样例解释:

对于第一个样例,执行翻转操作如下:

0 1 0 翻转第一枚硬币

1 0 0 翻转第三枚硬币

1 1 1 全部硬币正面朝上

对于第二个样例,执行翻转操作如下:

0 0 0 0 翻转第一枚硬币

1 1 0 0 翻转第四枚硬币

1 1 1 1 全部硬币正面朝上

对于第三个样例,无论如何执行操作都无法将所有硬币都翻转至正面朝上的状态。

数据范围:

对于20%的数据,保证硬币初始都是反面朝上

对于50%的数据,保证n≤10

对于100%的数据,保证T≤10,n≤1000

5. 深蓝的晚餐:

题目描述

蓝鲸深蓝作为海洋食物链的顶端,最喜爱的食物却是海里的磷虾。

充满智慧的它发现在南极附近的磷虾为了生存,演化出了一种奇妙的行动策略:一个磷虾族群有n只磷虾,这n只磷虾在最开始时各自独立行动,然后在一段时间后它们就会开始抱团行动,如果两个磷虾小队发现它们的数量一样多,就会合并为一个磷虾小队一起行动。一段时间后,这n只磷虾就合并出了若干个数量各不相同的磷虾小队。

经过了这一段时间的观察与研究,现在深蓝要开始进食了,由于磷虾们合并成了不同的磷虾小队,深蓝决定从数量最小的那一队开始进食,并决定每天只吃一队磷虾。

请问在接下来的k天内,深蓝一共可以吃掉多少只磷虾?

输入格式

输入仅一行,两个数字n,k,表示最初有n只磷虾,以及接下来会有k天时间。

输出格式

一个数字,表示深蓝接下来k天会吃掉多少只磷虾。

输入输出样例

输入 #1

6 1
 

输出 #1

2

输入 #2

13 2
 

输出 #2

5
 

输入 #3

47 3
 

输出 #3

7
 

说明/提示

样例解释:

对于样例1:初始的6只磷虾会分为两队,分别有4只磷虾,2只磷虾。所以第一天吃掉2只磷虾;

对于样例2:初始13只磷虾会氛围三队,分别有8只磷虾,4只磷虾,1只磷虾。所以前两天吃掉1+4 = 5只磷虾。

数据范围:

对于30%的数据,保证n≤20,k≤5

对于60%的数据,保证n≤10^9,k≤40

对于100%的数据,保证n≤10^18,k≤100

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值