南京信息工程大学第十届程序设计大赛试题

A. 签到

题目描述

本次程序设计大赛共有386人参加,请计算你本次比赛获得的奖项。

已知特等奖、一等奖、二等奖、三等奖的获奖比例分别为 前1%, 前5%, 前15% 和 前30%。

在计算获奖人数时,按照比例向下取整,如特等奖的获奖人数为 3。

输入描述

输入一个整数 n n n ( 1 ≤ n ≤ 386 1 \leq n \leq 386 1n386),表示你在本次竞赛的名次。

输出描述

输出包含一行,如果获得特等奖,则输出 Winner! ;

如果获得一等奖,则输出 Au! ;

如果获得二等奖,则输出 Ag! ;

如果获得三等奖,则输出 Cu! ;

如果你什么奖都没有得到,则输出 Fe...

样例输入
287
样例输出
Fe...

B. 切蛋糕

题目描述

负鼠是一个热情好客并且喜欢看见消息不回的物种。上个星期五是负鼠生日,她决定请她的好朋友们来家里做客。由于位置有限,尽管她的好朋友很多,但她最多只能邀请 n n n 个好朋友。

为了让大家能够玩的开心,她做了一个圆形的大蛋糕分给她的好朋友吃。众所周知,不患寡而患不均,于是她决定将这个大蛋糕用刀切成形状和大小都一样的 n + 1 n+1 n+1 块(自己也要吃),否则她的朋友们就会不开心。有一说一,这把刀只能切直线,不可以拐弯着切。

请你帮负鼠算一算,至少需要切多少刀才能让她的朋友们都开心。

输入描述

第一行包含一个整数 T ( 1 ≤ T ≤ 100 ) T(1\leq T \leq 100) T(1T100) , 表示测试数据组数。

接下来 T T T 行每行包含一个整数 n n n,其中 0 ≤ n ≤ 1 0 9 0 \leq n \leq 10^9 0n109,表示邀请 n n n 个好朋友。

输出描述

输出 T T T 行,每行包含一个整数,表示至少要切多少刀

样例输入
1
3
样例输出
2

C. 移动字符串

题目描述

负鼠发明了一个新算法,作用是化简字符串。

给定一个长度为 n n n 的字符串,她要对它实行的算法如下:

  • 如果当前字符串中存在至少一个字母 a , 那么就删去字符串中最左边的 a 并退出算法, 否则进行下一步;
  • 如果当前字符串中存在至少一个字母 b , 那么就删去字符串中最左边的 b 并退出算法, 否则进行下一步;
  • 如果当前字符串中存在至少一个字母 z , 那么就删去字符串中最左边的 z 并退出算法。

由于该方法过于弱智,因此需要运行 k k k 次才能产生效果。

负鼠使用的电脑运行比较慢,于是求助于你来计算运行该算法 k k k 次以后的字符串。

输入描述

第一行包含两个整数 n n n k k k,其中 1 ≤ k ≤ n ≤ 4 ∗ 1 0 5 1 \leq k \leq n \leq 4*10^5 1kn4105。n和k分别代表字符串的长度和运行该算法的次数。

第二行输入一个由 n n n 个小写字母构成的字符串。

输出描述

输出原字符串运行该算法 k k k 次后得到的新字符串。

样例输入
15 9
cccaabababaccbc
样例输出
cccccc

D. 卡布奇诺

题目描述

后勤部长最近迷上了喝卡布奇诺。为此她买了 n n n 个杯子,每个杯子刚开始有 a i a_i ai 毫升卡布奇诺。

后勤部长的脑洞比较大,经常做出如下两种令人窒息的操作:

  1. 选择一个杯子 i i i ,加入和其当前体积相同体积的卡布奇诺,即 a i ⇒ 2 a i a_i \Rightarrow2 a_i ai2ai
  2. 选择一个杯子 i i i ,倒掉其体积一半的卡布奇诺,即 a i ⇒ ⌊ a i 2 ⌋ a_i \Rightarrow \lfloor \frac{a_i}{2} \rfloor ai2ai。 其中 ⌊ ⌋ \lfloor \rfloor 表示向下取整。

这一天,她突然有了一个想法:能不能通过若干次上述操作,使得所有杯子中的卡布奇诺容量相同呢?

输入描述

第一行包含一个整数 n n n ,其中 1 ≤ n ≤ 1 0 5 1\leq n \leq 10^5 1n105 ,表示杯子数量为 n n n
第二行包含 n n n 个整数 a i a_i ai ,其中 1 ≤ a i ≤ 1 0 5 1 \leq a_i \leq 10^5 1ai105 ,表示初始状态下第 i i i 个杯子中卡布奇诺的毫升数。

输出描述

输出一个整数,表示让所有杯子中卡布奇诺体积相等需要的最小操作次数。

样例输入
3
4 8 2
样例输出
2

E. 花钱

题目描述

后勤部长所在的C137号宇宙的地球上有 n n n 个小镇,编号为 1 ∼ n 1 \sim n 1n ,有 n − 1 n-1 n1 条道路连接着这 n n n 个小镇,保证任意两个小镇间都有若干条道路相连接。

这一天,后勤部长突然想出去转转。她将选择一个小镇 u u u 作为起点,再任选一个小镇 v v v 作为终点 ( u ≠ v u \not = v u=v),然后沿着从u到v的最短路旅游。

但是,该地球上有两个非常豪华的商业小镇 HongYangXinJieKou ,如果先从 HongYang 走,再经过 XinJieKou ,后勤部长就会忍不住买一大堆衣服和包包,最后因为没钱吃饭被饿死。

由于后勤部长非常怕死,所以需要聪明的你帮她计算一下,有多少种路线的选择方法,可以让她活着完成这次旅游。

输入描述

第一行包含三个整数 n , x , y n,x,y nxy ( 1 ≤ n ≤ 3 ∗ 1 0 5 , 1 ≤ x , y ≤ n , x ≠ y 1\leq n \leq 3*10^5,1\leq x,y \leq n, x \not = y 1n3105,1x,yn,x=y)。分别表示小镇的数量,HongYang 的编号和 XinJieKou 的编号。

紧接着n-1行,每行输入两个整数 a a a b b b ( 1 ≤ a , b ≤ n , a ≠ b ) (1 \leq a,b \leq n , a \not = b ) (1a,bn,a=b),表示编号为 a a a 的小镇和编号为 b b b 的小镇之间有一条道路相连接。

输出描述

输出一个整数,表示可选择路线的数量。

样例输入
3 1 3
1 2
2 3
样例输出
5

F. 下棋

题目描述

后勤部长有两个好朋友,一个叫 CY ,还有一个叫 叉JJ。她们两个酷爱下棋,由于现有的棋类游戏已经无法满足她们,于是她们决定自己开动脑筋,发明一种新的下棋游戏。

她们的棋盘是无穷大的,CY先手移动,在她的回合中,她可以将她的棋子从 ( x , y ) (x,y) (x,y) 移动到 ( x − 1 , y ) (x-1,y) (x1,y) ( x , y − 1 ) (x,y-1) (x,y1)叉JJ 后手移动,为了公平起见,在她的回合中,她可以将她的棋子从 ( x , y ) (x,y) (x,y) 移动到 ( x − 1 , y ) , ( x , y − 1 ) , ( x − 1 , y − 1 ) (x-1,y) , (x,y-1) , (x-1,y-1) (x1,y),(x,y1),(x1,y1) 中的任意一个位置。规则同时声明,她们可以选择在自己的回合不移动棋子。

还有一些附加的限制,两人都不能将自己的棋子移动到 x 坐标或 y 坐标为负的格子里,或者移动到包含对手棋子的格子里,获胜者是第一个到达坐标 ( 0 , 0 ) (0,0) (0,0) 的人。

输入描述

输入第一行包含一个整数 T ( 1 ≤ T ≤ 500 ) T (1 \leq T \leq 500) T(1T500) ,表示输入数据的组数。

接下来 T T T 行每行包括四个整数: a , b , c , d ( 0 ≤ a , b , c , d ≤ 1 0 5 ) a, b, c, d (0\leq a,b,c,d \leq 10^5) a,b,c,d(0a,b,c,d105),分别表示 CY 棋子的初始坐标和 叉JJ 棋子的初始坐标。

输出描述

输出 T T T 行,每行输出获胜者的名字。

如果 CY 获胜,则输出 CY ;

如果 叉JJ 获胜,则输出 XJJ

样例输入
2
2 1 2 2
4 7 7 4
样例输出
CY
XJJ

G. 学Python

题目描述

后勤部长最近在学大数据挖掘,需要用到 Python ,于是她开始学习 Python 。

由于她的脑容量比较小,因此只能记住以下两种简单的语句:

  1. 赋值语句 ;
  2. For 语句。For 语句由一个以 For 开头的单独行和循环体组成。循环体是一个语句块,它比循环头缩进一层。循环体可以包含赋值语句和 For 语句。注意:循环体不能为空。

由于后勤部长在学习 C++ 的时候不注意缩进,所以她写出来的 Python 代码也没有缩进。但是在 Python 中,代码块没有显式的开始/结束或花括号来标记块的开始和结束,而是由缩进定义代码块。

现在给出她写的没有缩进的 Python 代码,请你帮她计算一下她写的代码通过合理的缩进后可能构成多少种合法的 Python 程序。

输入描述

第一行包含一个整数 N ( 1 ≤ N ≤ 5000 ) N (1 \leq N \leq 5000) N(1N5000) ,表示后勤部长程序的代码行数。

接下来n行每行包含一个字母 sf ,其中 s 代表简单的赋值语句, f 代表 For 语句。

输入数据保证最后一行一定是赋值语句。

输出描述

输出可能构成的合法 Python 程序的数量,由于该值较大,请将结果 m o d    1 0 9 + 7 \mod 10^9+7 mod109+7 输出。

样例输入
4
s
f
f
s
样例输出
1

H. Sort the String

题目描述

You are given a string S S S of length n n n and q q q queries. Each query is on the format l l l r r r k k k which means sort the substring consisting of the characters from l l l to r r r in non-decreasing order if k   =   1 k = 1 k=1 or in non-increasing order if k   =   0 k = 0 k=0.

Please calculate and output the final string after applying the queries.

输入描述

The first line will contain two integers n , q ( 1 ≤ n ≤ 1 0 5 , 1 ≤ q ≤ 50000 ) n, q (1 \leq n \leq 10^5, 1\leq q \leq 50000) n,q(1n105,1q50000), which means the he length of the string and the number of queries.

输出描述

Output the final string after applying the queries.

样例输入
10 5
abacdabcda
7 10 0
5 8 1
1 4 0
3 6 0
7 10 1
样例输出
cbcaaaabdd

I. BJ的猫饼

题目描述

铲屎官的终身大事是服侍好喵主子。有些人表面上风风光光,实际上背地里连猫都没有。BJ 通过多年的努力,终于拥有了一只橘猫。今天,BJ 决定做一些猫饼给喵主子吃。他从超市里采购了 n 种猫饼(标号为 1~n ),每种猫饼的数量有 a i a_i ai 份,每种猫饼会给喵主子带来基于 v i v_i vi 的愉悦值。当然,心灵手巧的 BJ 可以任选一个特定的猫饼,将其加工成一种新的超级猫饼,超级猫饼会给喵主子带来另一种愉悦值 y i y_i yi 。新的超级猫饼共有 m m m 种。喵主子吃重复的猫饼或超级猫饼会重复计算愉悦值。最后的总愉悦值计算方式为:

总愉悦值 = ( ∏ v i ) ∗ ( ∏ y i ) (\prod v_i) * (\prod y_i) (vi)(yi)

其中 v i v_i vi 表示没有加工直接喂给喵主子的猫饼对应的愉悦值, y i y_i yi 表示加工成的超级猫饼对应的愉悦值。

但是,吃太多重复的猫饼会觉得不好吃,所以对于猫饼和超级猫饼,每一种饼,喵主子最多吃 c i c_i ci 块。
此外考虑到健康因素,吃的所有猫饼的个数不应超过 c c c 块。
为了让喵主子的体重变的“橘势大好“,BJ 想知道喵主子的愉悦值的最大值。这个值可能很大,因此请输这个值 m o d    1 0 9 + 7 \mod 10^9+7 mod109+7

输入描述

第一行三个整数 n , m , c n, m, c n,m,c,含义如题干所述。 ( 1 ≤ n , m ≤ 1000 , 1 ≤ c ≤ 1000 ) (1 \leq n,m \leq 1000, 1 \leq c \leq 1000) (1n,m1000,1c1000)

接下来一行有 n n n 个整数,表示 a i a_i ai

然后一行又有 n n n 组整数,每组两个整数,分别表示 v i , c i v_i, c_i vi,ci ( v i v_i vi是2的幂次且 v i ≤ 2 31 v_i \leq 2^{31} vi231),对于第 i 块猫饼,喵主子只愿意吃 c i c_i ci块。

接下来 m m m 行:

这些 m m m 行的第一个数 k k k ( k ≤ 5 k \leq 5 k5) 表示第 i i i 种超级猫饼可以由哪些猫饼任选一个制成。紧接着 k k k 个数表示这些猫饼的序号。再有一个整数 y i y_i yi( y i y_i yi是2的幂次且 y i ≤ 2 31 y_i \leq 2^{31} yi231)。最后再有一个整数 c i c_i ci,对于第 i i i 块猫饼,喵主子只愿意吃 c i c_i ci 块。其中 ∑ k ≤ 2000 \sum k \leq 2000 k2000

输出描述

输出一行,表示喵主子的最大愉悦值。(需要 m o d    1 0 9 + 7 \mod 10^9+7 mod109+7

样例输入
5 6 5
24 75 65 80 7  
128 89 128 68 4 79 1024 83 1024 100  
1 4 8 8
1 1 16 7
1 4 32 1
4 2 4 1 3 16 7
2 2 3 16 9
4 4 1 3 2 256 4
样例输出
898961331
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总想玩世不恭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值