0922test
-
最小数
Time Limit: 1 Sec Memory Limit: 128 MB
文件名:a.cpp
Description
给定一个正整数n,请去掉其中的m个数字,使其剩下的数字按原先从左到右的相对次序组成一个新数,但该新数的
值必须尽可能的小。
Input
只有一行,共2个整数,分别是n和m的值,中间用一个空格分隔。
n不超过240位,所有的数据m的值都小于n的位数。
Output
只有一行,输出这个最小值,这个数字不允许有前置0的存在。但当结果为0时,要输出为0.
Sample Input
456547 1
Sample Output
45547 -
排名
Time Limit: 1 Sec Memory Limit: 128 MB
文件名:b.cpp
Description
宁波市的小学生们在镇海中学完成程序设计比赛后,老师们批出了所有学生的成绩,成绩按分数从高到低排名,成
绩相同按年级从低到高排(注:纯属虚构,请勿对号入座)。现在主办单位想知道每一个排名的学生前,有几位学
生的年级低于他(她)。
Input
有若干行:
第1行只有一个正整数n(1≤n≤200),表示参赛的学生人数。
第2行至第n+1行共n行,每行有两个正整数s(0≤s≤400),g(1≤g≤6)。
其中第i+1行的第一个数s表示第i个学生的成绩,第i+1行的第二个数g表示第i个学生的年级。
Output
有n行,每行只有一个正整数
其中第i行的数k表示排第i名的学生前面有k个学生排名比他(她)高,且年级比他(她)低。
Sample Input
23
250 4
220 2
20 4
290 2
370 6
210 2
360 1
180 1
200 2
170 3
50 6
300 6
150 1
400 6
90 2
390 6
100 2
380 5
350 2
310 4
40 6
0 6
320 3
Sample Output
0
0
0
1
0
1
2
3
5
1
4
1
1
1
0
7
0
3
3
15
15
12
16 -
分解数字
Time Limit: 1 Sec Memory Limit: 128 MB
文件名:c.cpp
Description
输入自然数n和m,输出n的所有分解和式,分解后的每一项都不大于m。组成和式的数字自左至右构成一个不降的序
列,不能重复。如以下三个分解式4=1+1+2;4=1+2+1;4=2+1+1 中只有第一个符合要求。各组方案之间按照字典顺
序输出。
Input
有两行,每行只有一个正整数。第一行是n,第二行是m。
1≤n≤50,1≤m≤n
Output
含若干行,每行先输出标号,注意标号后有’:’,然后输出一个和式。
Sample Input
7
4
Sample Output
1:7=1+1+1+1+1+1+1
2:7=1+1+1+1+1+2
3:7=1+1+1+1+3
4:7=1+1+1+2+2
5:7=1+1+1+4
6:7=1+1+2+3
7:7=1+2+2+2
8:7=1+2+4
9:7=1+3+3
10:7=2+2+3
11:7=3+4 -
最大约数和
Time Limit: 1 Sec Memory Limit: 128 MB
文件名:d.cpp
Description
选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。如:输入一个数11,则可取
数字4和6,可以得到约数和的最大值(1+2)+(1+2+3)=9
Input
只有一个正整数S。
1≤s≤1000
Output
只有一行,该行只有一个整数,为求得的最大值。
Sample Input
11
Sample Output
9
1027test
- Lifeguards
Time Limit: 1 Sec Memory Limit: 128 MB 文件名:life.cpp
Description
FJ建了一个游泳池给他的奶牛们游泳,现在他要雇佣救生员来保证他的奶牛们的安全。 每一个救生员有一个值班时间,值班时间是l~r,比如l=4,r=7,那么值班总时长为3个单位时间。 他在雇佣救生员的时候不小心雇佣多了,现在他需要解雇一个救生员,但是他想让剩下的救生员们能值尽量长的班。
Input
第一行一个整数N (1<=N<=100),表示现在雇佣了N个救生员。 接下来N行,每行两个整数l,r,表示值班的开始和结束时间。 0<=l,r<=1000
Output
一行一个整数,表示在开除一个救生员之后剩下来的救生员能值最长的班是多少。
Sample Input 3 5 9 1 4 3 7
Sample Output 7 Hint: 开除第三个救生员之后,4-1=3,9-5=4,3+4=7。 - 我要的幸福
Time Limit: 1 Sec Memory Limit: 256 MB 文件名:happiness.cpp
Description
我要的幸福(happiness) 幸福/我要的幸福/渐渐清楚/梦想/理想/幻想/狂想/妄想/我只想坚持每一步/该走的方向/就算一路上/偶尔会沮丧/ 生活是自己/选择的衣裳/幸福/我要的幸福/没有束缚/幸福/我要的幸福/在不远处 Description Zyh相信自己想要的幸福在不远处。然而,zyh想要得到这幸福,还需要很长的一段路。Zyh坚持认为整个人生可以 抽象为一个nm的棋盘。左上角的格子为(1,1),右下角的格子为(n,m)。整个棋盘上的格子都有不同的事件,因为 生活的多姿多彩,事件的权值Aij都两两不同。不幸的是,在整个人生中有若干个极其黑暗的事件,它们的权值Aij =0。更进一步说,对于Aij>0的事件,权值两两不同。Zyh站在人生的起点(1,1),他想要走向人生的巅峰(n,m)。Zy h认为人只能前进,即若Zyh站在(a,b),他只能走向(a,b+1)或者(a+1,b)。并且Zyh认为黑暗的事件是绝对不可以触 碰的,因为一旦经历就会坠入万丈深渊。Zyh会将自己所经历的事件的权值依次写出,形成一个n+m-1的序列。Zyh 想知道其中字典序最小的序列是什么。若是人生过于艰难,没有一个合法序列,就输出"Oh,the life is too diff icult!",不包含引号。
Input
输入的第一行是两个正整数n和m。接着是n行m列的人生棋盘。 n<=1000 m<=1000 Aij<=1e9
Output
输入只有一列,如果存在合法序列,则为n+m-1个用一个空格隔开的权值。 否则就输出Oh,the life is too difficult!
Sample Input 3 3
1 3 4 7 9 0 5 6 8
Sample Output 1 3 9 6 8
3.水灾
Time Limit: 1 Sec Memory Limit: 64 MB 文件名:slikar.cpp
Description
大雨应经下了几天雨,却还是没有停的样子。土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地 方都将会被洪水淹没。CCY所在的城市可以用一个NM(N,M<=50)的地图表示,地图上有五种符号:". * X D S"。其 中"X"表示石头,水和人都不能从上面经过。"."表示平原,CCY和洪水都可以经过。""表示洪水开始地方(可能有 多个地方开始发生洪水)。"D"表示CCY的别墅。"S"表示CCY现在的位置。CCY每分钟可以向相邻位置移动,而洪水 将会在CCY移动之后把相邻的没有的土地淹没(从已淹没的土地)。求CCY回到别墅的最少时间。如果聪哥回不了家 ,就很可能会被淹死,那么他就要膜拜黄金大神涨RP来呼叫直升飞机,所以输出"ORZ hzwer!!!"。
Input
Output
Sample Input 3 3 D. … .S.
Sample Output 3
4.射手宫
Time Limit: 1 Sec Memory Limit: 128 MB 文件名:shooter.cpp
Description
第九个他们来到射手宫,身为射手座黄金圣斗士的艾尔里斯是狮子座圣斗士艾尔里亚的哥哥,他早在13年前就发现了撒加杀了真教皇,并且自己做了假教皇。然而他却被撒加迫害致死。现在星矢四人已经来到了射手宫。艾尔里斯的灵魂想考验一下这些圣斗士们的水平,在射手宫的墙上留下了一道题目。 “已知艾尔里斯和弟弟艾尔里亚的基因基本相同,由于基因表达起来不方便,所以就用n个数字来表示。(因为至今共发现100000种基因,所以每个数字都<=100000)兄弟之间的基因个数是相同的,就是说他们都有n个数字。且对于每个人,这n个数字互不相同。现在要求兄弟之间基因的最长公共部分。可以不连续。” 如果,他们解决不了这题,就通不过射手宫了。不过还好,他们顺利地通过了!
Input
本题包含多组数据. 第1行,为n(1<=n<=100000) 下面2行,每行n个数字,表示了一个人的所以基因。
Output
对于每组数据输出一行,为他们两人基因的最长公共部分。
Sample Input 7 1 2 3 4 5 6 7 7 6 5 4 1 2 3
Sample Output 3
1103test
T1:糖果
(candy.cpp/in/out 1s 256M)
小民是一个很喜欢吃糖果的小孩子,他给所有的糖果进行了分类,有A~Z一 共26种糖果,现在小民有一排糖果,小
民很奇怪,吃糖果只喜欢吃连续的若干个 ,并且不希望吃到相同分类的糖果。现在小民让你帮他计算一下L的最大
值,使得他的一排糖果中的任意连续L个糖果都不会有相同的分类。
Input
输入仅一行,一行由大写字母组成的字符串,代表小民的一排糖果。
Output
输出仅一行,输出L的最大值。如果一排糖果都没有相同的,请输出-1。
Sample Input
ABABABABABAB
Sample Output
2
令字符串的长度为N ,1≤N≤10000000。
T2:迷宫
(maze.cpp/in/out 1s 256M)
最近,小Y在玩一款迷宫游戏,游戏是在一个n? m的网格上进行的,每个
格子可能是空地或者障碍物。游戏一开始,玩家控制的角色位于图中的某块空地
上。在游戏过程中,玩家可以用上下左右键控制角色向相邻且没有障碍物的格子
移动(当然,角色不能移动到地图之外,也不能对角线移动)。游戏的目标是收
集地图上出现的星星(每个星星只能收集一次),收集的数量越多分数越高。小
Y刚开了一局游戏,假设游戏时间没有限制,他想知道自己最多能收集到多少个
星星。
Input
第一行包含两个正整数n和m,表示游戏的地图包含n行m列。
接下来给出一个n×m的字符矩阵,每个字符可能为以下几种:
● #:表示该位置有障碍物
● . (英文句号):表示该位置是空地
● :表示该位置是空地,且生成了一颗星星
● S :表示该位置是空地,且玩家初始时位于该位置,保证图中有且只有一个S
1≤n,m≤200。
Output
共一行,包含一个整数,表示最多能收集到多少颗星星
Sample Input
4 8
..#....
.#.S#..
######..
...#.*.
Sample Output
2
T3:盒子
(box.cpp/in/out 1s 256M)
小D在玩堆盒子的游戏,每个盒子有一个强度,代表它上方最多能堆多少个
盒子。由于盒子都是一样大的,所以不能在一个盒子上并列放超过一个盒子。
现在小D有n个盒子,第i个盒子的强度为xi。小D想知道,如果他要把这些盒
子全部堆起来,至少要堆多少堆。
Input
第一行读入一个整数n,代表小D有的盒子个数。
第二行读入n个整数,第i个整数xi表示第i个盒子的强度。
Output
一个整数表示小D至少要堆多少堆。
n≤500000,xi≤1000000000。
Sample Input
5
0 2 1 1 2
Sample Output
2
1105test
T1:整数拆段
(number.cpp/in/out 1s 128M)
将一个位数为L(4≤L≤10)的自然数N拆成4段,使各段对应的数的乘积最小。你能编一个程序实现吗?
Input
一个自然数N。
Output
一个整数,最小乘积。
Sample Input
321427
Sample Output
2268
//3214*27=2268
T2:八中教室的灯
(lamb.cpp/in/out 1s 256M)
八中一共有被用M条双向道路连接的N个教室(1<=N,M<=3000)。为了关闭整个八中,master wen 计划每一次关
闭掉一个教室。当一个教室被关闭了,所有的连接到这个教室的道路都会被关闭,而且再也不能够被使用。master
wen现在正感兴趣于知道在每一个时间(这里的“时间”指在每一次关闭教室之前的时间)时他的八中是否是“全
连通的”——也就是说从任意的一个开着的教室开始,能够到达另外的一个教室。注意自从某一个时间之后,可能
整个八中都开始不会是“全连通的”。
Input
第一行给出数字N,M,代表有N个教室,M条边,1<=N,M<=3000
接下来N行来用描述教室之间相连的情况
接下来N行,每行给出一个数字,代表关闭了哪个教室的灯
Output
输出N行,每行输出"YES"或"NO".
第一行输出最开始时整个八中是不是连通的
后面的N-1用来描述关闭某个教室的灯后,八中是不是连通的。
Sample Input
4 3
1 2
2 3
3 4
3
4
1
2
Sample Output
YES
NO
YES
YES
T3:Bank notes
(bank.cpp/in/out 1s 128M)
Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn
. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币.
Input
第一行一个数 n, 1 <= n <= 200.
接下来一行 n 个整数b1, b2,..., bn, 1 <= b1 < b2 < ... < b n <= 20 000,
第三行 n 个整数c1, c2,..., cn, 1 <= ci <= 20 000, 表示每种硬币的个数.
最后一行一个数k表示要凑的面值数量, 1 <= k <= 20 000.
Output
第一行一个数表示最少需要付的硬币数
Sample Input
3
2 3 5
2 2 1
10
Sample Output
3