CSP-J复赛 模拟题4

1. 删数游戏:

题目描述

两名同学在黑板上做删数游戏,游戏规则如下:

两名同学先一起在黑板上写了n个数字,同学A先擦掉一个数字,之后同学B再擦掉一个数字,轮流进行,直到黑板上只剩下最后一个数字;同学A希望最终留在黑板上的数字尽可能小,而同学B则希望最终留在黑板上的数字尽可能大。请问当两人都采取最优策略进行游戏时,黑板上剩下的数字是多少?

输入格式

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

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

第一行,一个正整数n表示n个数字;

第二行,n个正整数1,2,...,a1​,a2​,...,an​。

输出格式

输出共T行,每行一个数字表示一组数据的结果。

输入输出样例

输入 #1

2
3
2 1 3
3
2 2 2
 

输出 #1

2
2

说明/提示

样例解释:

对于第一组数据,同学A先擦掉数字33,同学B再擦掉数字11,剩余一个数22游戏结束。

数据范围:

对于20%的数据,保证n≤3.

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

对于80%的数据,保证n≤10^4.

对于100%的数据,保证T≤10,n≤10^5.

2.阶乘密码:

题目描述

woshiluo最近疯狂迷恋上了密码学,他发现对于一些特定的数字n,其阶乘!=1⋅2⋅3⋅...⋅n!=1⋅2⋅3⋅...⋅n的末尾0的数量是一定的。

于是woshiluo想出了一个绝妙的信息加密方式(虽然可能没有什么用),就是将所有的阶乘末尾0个数为k的数字从小到大排列,将这些数字对应的变为数字k。

例如5,6,7,8,95,6,7,8,9这五个数字的阶乘末尾都恰好有11个数字00,那么我们就可以将子串5678956789加密为数字11。

现在我们给出加密之后的数字k,请你将该数字对应的原数字串完整的输出出来。如果答案不存在,请输出-1。

输入格式

第一行,一个正整数T,表示多组数据。

之后T行,每行一个整数n,表示加密之后的数字n。

输出格式

输出共�T行,每行对应输入数字对应的原数字串。

输入输出样例

输入 #1

2
4
5
 

输出 #1

20 21 22 23 24
-1
 

说明/提示

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

对于100%的数据,保证T≤10^5,n≤10^6

3.字符串的奇异变换:

题目描述

作为享誉世界的大魔法师,普里查德总是会鼓捣出一些新奇的魔法。

某日,普里查德发明了一种专门针对于英文单词的魔法,这个魔法可以将英文单词中任意的两个相邻字母交换位置,例如:

单词friendly就可以被施展一次魔法之后变成frinedly,这次魔法交换了原单词中e,n两个字母的位置。

现在给出一个单词W1​,请问普里查德能否通过施展若干次魔法,来将这个单词变为另一个给定的单词W2​。如果可以请输出Yes,否则请输出No。

输入格式

输入第一行,一个正整数T表示多组数据。

接下来的T行,每行两个字符串W1​,W2​表示给定的两个单词。

输出格式

输出共T行,每行一个回答Yes或No表示询问是否可行。

输入输出样例

输入 #1

3
product drocupt
beijing jiebing
upload download
 

输出 #1

Yes
Yes
No
 

说明/提示

数据范围:

对于30%的数据,保证所有输入的字符串W1​,W2​长度相等.

对于60%的数据,保证所有输入的单词长度∣W1​∣,∣W2​∣≤102.

对于100%的数据,保证T≤10,∣W1​∣,∣W2​∣≤105,且单词仅由小写字母构成

4.Beautiful Array:

题目描述

一个优美的数组定义如下:

  • 如果一个数组中存在一个数恰好等于该数前面所有数之和,那么这个数组就是丑的。如果一个数组不是丑的,就是美的。

现在给出一个长度为n的数组1,2,...,a1​,a2​,...,an​,你可以交换该数组中的任意两个数字,并可以交换无限次。请问你是否能够通过若干次的交换,将数组调整成一个优美的数组?

如果可以做到,请你输出YES,否则输出NO。

输入格式

  • 输入第一行,一个整数T表示多组数据。

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

  • 每组数据第一行,一个整数n,表示数组大小。

  • 每组数据第二行,n个正整数1,2,...,a1​,a2​,...,an​。

输出格式

输出共T行,每行一个回答YES或NO。

输入输出样例

输入 #1

 

输出 #1

 

说明/提示

样例解释:

对于第一组数据,可以将数组交换至6,3,6,36,3,6,3即能够满足是一个优美的数组。

对于第二组数据,无论如何交换数组都是丑的。

对于第三组数据,可以将数组交换至2,4,5,3,12,4,5,3,1即能够满足是一个优美的数组。

数据范围:

对于20%的数据,保证ai​按照从大到小的降序给出.

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

对于80%的数据,保证n≤10^4.

对于100%的数据,保证T≤10,n≤10^5,1≤ai​≤2⋅10^9.

5.优秀的字符串:

题目描述

优秀的字符串是建立在非常严格的评判标准之上的。

对于一个字符串 1,2,⋯ ,t1​,t2​,⋯,tn​,

我们定义它的右移为 1,⋯ ,−1tn​,t1​,⋯,tn−1​;

我们定义它的左移为 2,3,⋯ ,t1t2​,t3​,⋯,t1​。

那么一个优秀的字符串s需要满足:它的左移与右移完全相等。

现在罗老师给你了一个仅由数字构成的字符串s,你可以删掉该字符串中任意的字符,但需要保证剩下的部分是一个优秀的字符串。请你求出至少删除多少个字符,可以达成这个目标?

输入格式

  • 输入第一行,一个正整数T表示多组数据;

  • 接下来的T行,每行一个字符串si​,表示罗老师给出的字符串。

输出格式

输出共T行。

第i行一个整数,表示对于第i个字符串si​,最少删除多少个字符可以使剩余部分是一个优秀的字符串。

输入输出样例

输入 #1

3
58264464
111111
61216121
 

输出 #1

4
0
4

说明/提示

样例解释:

对于第一组数据:删去5,8,2,45,8,2,4四个字符,得到64646464满足条件;

对于第二组数据:不需要删去字符,原字符串即是优秀的字符串;

对于第三组数据:删去44个字符得到11111111是一个优秀的字符串。

数据范围:

对于20%的测试点,保证字符串仅由0,10,1构成.

对于50%的测试点,保证字符串长度∣s∣≤102.

对于80%的测试点,保证字符串长度∣∣s∣≤5⋅10^3.

对于100%的测试点,保证字符串长度∣s∣≤10^5,T≤10.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值