Professional Documents
Culture Documents
提高组 第二试
比赛时间:2022 年 10 月 2 日 08:00-12:00
提交源程序文件名
对于 C++ 文件 company.cpp game.cpp string.cpp query.cpp
编译选项
对于 C++ 语言 -O2 -lm
2022 年淮安市青少年程序设计培训
A. 蜜桃猫的公司 (company)
时间限制: 4 seconds
【题目描述】
蜜桃猫开了一家公司, 它准备进行一场选拔。
有 m 个职位,有 n 个人去应聘,公司只会录用其中 m 个人担任这 m 个职
位。一个合理的用人方案为:一个职位只能由一个人承担且必须由一个人承
担,而一个人也最多只能担任一个职位。
可以用一个价值矩阵 A 衡量职位和员工的适配度,Aij 表示第 i 个职位和第 j
个员工的适配度是多少,保证同一个职位 i,Aij ̸= Aik ,蜜桃猫想选择一个合理
的用人方案,使得每个职位和对应安排的人的适配度之和最大。
可惜的是,通过面试,我们不能确定 A,只能知道对于每个职位而言这
n 个人的适配度相对大小关系。这里对于每个职位给出一个排列 Pi ,保证
∀1 ≤ x < y ≤ n, AiPix > AiPiy 。
现在蜜桃猫想知道,对于任意满足每个排列 Pi 的 A 矩阵,有可能被录用的
人有哪些。某个人在其中一个合理的用人方案中被录用,则称这个人有可能
被录用。
【输入格式】
第一行两个正整数 n, m。
下面 m 行,每行 n 个数,表示一个排列 Pi 。
【输出格式】
第一行一个数 k,表示有可能被录用的人的数量。
下面一行 k 个数用空格分开,
表示有可能被录用的人的编号,
编号按升序输出。
【样例输入输出】
样例输入 1 样例输出 1
4 2 3
1 2 4 3 1 2 3
1 3 4 2
A. 蜜桃猫的公司 (company) 1
2022 年淮安市青少年程序设计培训
样例输入 2 样例输出 2
4 2 2
1 4 3 2 1 2
2 3 4 1
样例 3 见文件 03-sample.in,03-sample.out。
【样例解释】
对于样例 1,有两种情况:
1 号职位安排 1 号人,2 号职位安排 3 号人。
1 号职位安排 2 号人,2 号职位安排 1 号人。
可以证明,对于所有满足 Pi 的 A,都属于这两种情况之一。
因此可能被录用的人编号为 1, 2, 3。
【数据范围与约定】
本题共 10 个测试点
测试点 1-2: 1 ≤ m ≤ n ≤ 5
测试点 3-5: 1 ≤ m ≤ n ≤ 10
测试点 6-7: 1 ≤ m ≤ 11, 1 ≤ n ≤ 1000, m ≤ n, 保证所有 Pi 相同
测试点 8-10:1 ≤ m ≤ 11, 1 ≤ n ≤ 1000, m ≤ n
A. 蜜桃猫的公司 (company) 2
2022 年淮安市青少年程序设计培训
B. 哈拉鱼的游戏 (game)
时间限制: 5 seconds
【题目描述】
哈拉鱼在玩一个打怪游戏。
游戏地图可以看作一个 n 个点 m 条边的无向图,有 k 个怪物。
怪物平时是隐身状态,但是在某些特定时刻,怪物会在某个点显形,这时
如果哈拉鱼刚好在这个点,则可以击败怪物。一个怪物被击败后不再出现。如
果多只怪物同时在某个点出现,哈拉鱼可以同时击败它们。
哈拉鱼有一个技能分身术,使得地图上有两只同时狩猎怪物的哈拉鱼,且
它们的动作是独立的,这两个分身在第 0 秒时分别位于 x, y 两个点。
走过一条长度为 w 的边需要消耗哈拉鱼 w 秒,每个时刻哈拉鱼都可以选择
沿着边移动或者原地不动。
哈拉鱼希望尽快击败所有怪物,击败所有怪物时通关。第 tmax 秒关卡结束,
如果超过这个时间则哈拉鱼闯关失败。
【输入格式】
本题采取多组数据输入输出。
第一行一个 T 表示数据组数。
对于每组数据,第一行三个数 n, m, k,表示图的点数,边数和猎物数量。
下面 m 行,每行三个数 u, v, w, 表示一条边连接 u, v 两个点,边长为 w。
下面一行两个数 e, tmax ,表示怪物显形的事件个数和关卡的最大时间。
下面 e 行,每行三个数 p, x, t 表示一个怪物出现事件: 编号为 p 的怪物,在
第 t 秒时,会在 x 号点出现。
下面两个数 x, y,表示哈拉鱼的两个分身初始位于 x 号点和 y 号店。
【输出格式】
如果无法过关,输出-1, 否则输出最短通关时间。
【样例输入输出】
B. 哈拉鱼的游戏 (game) 3
2022 年淮安市青少年程序设计培训
样例输入 1 样例输出 1
1 1
3 1 2
1 2 1
3 3
1 2 1
2 2 1
1 2 2
2 3
【样例解释】
哈拉鱼的两个分身在 2,3。
两个分身不动,在 2 号点的分身等 1 秒,在第 1 秒时,1,2 两只怪都在 2
号点显形,哈拉鱼击败这两只怪物通关。
【数据范围与约定】
本题共 10 个测试点
测试点 1-3:1 ≤ n ≤ 100, 1 ≤ m ≤ 200, 1 ≤ k ≤ 8, 1 ≤ e ≤ 102 , 1 ≤ tmax ≤
108 , 1 ≤ wi ≤ 104
测试点 4-5:1 ≤ n ≤ 104 , 1 ≤ m ≤ 2 ∗ 104 , k = 1, 1 ≤ e ≤ 105 , 1 ≤ tmax ≤
108 , 1 ≤ wi ≤ 104
测试点 6-8:1 ≤ n ≤ 103 , 1 ≤ m ≤ 2 ∗ 103 , 1 ≤ k ≤ 6, 1 ≤ e ≤ 103 , 1 ≤ tmax ≤
500, 1 ≤ wi ≤ 10
测试点 9-10:1 ≤ n ≤ 104 , 1 ≤ m ≤ 2 ∗ 104 , 1 ≤ k ≤ 8, 1 ≤ e ≤ 105 , 1 ≤ tmax ≤
108 , 1 ≤ wi ≤ 104
对于所有数据,1 ≤ ti ≤ tmax , 1 ≤ pi ≤ k, 1 ≤ xi ≤ n。
对于测试点 1-5:T = 4
对于测试点 6-10:T = 1
B. 哈拉鱼的游戏 (game) 4
2022 年淮安市青少年程序设计培训
C. 一二的字符串 (string)
时间限制: 10 seconds
【题目描述】
一二最近在学习字符串。
求两个字符串的编辑距离是一个常见的问题:具体可以描述为对于两个串
S,T,允许对 S 做三种操作:在任意位置加入一个字符;删除任意一个字符;修
改某个位置的字符。使 S 变到 T 的最小操作次数称为这两个串的编辑距离。
现在一二准备简化这个问题:对于两个字符串,若编辑距离大于 k,输出
NO,否则输出 YES, 并输出这个最小操作次数。
【输入格式】
本题采取多组数据输入。
第一行一个 T,表示数据组数。
对于每组数据,第一行三个数 n, m, k,表示 S 串的长度,T 串的长度,和问
题给定的参数。
下面一行一个小写字母构成的字符串 S。
下面一行一个小写字母构成的字符串 T。
【输出格式】
【样例输入输出】
C. 一二的字符串 (string) 5
2022 年淮安市青少年程序设计培训
样例输入 1 样例输出 1
2 YES
3 4 3 2
kot NO
plot
5 7 3
zycie
porazka
【样例解释】
【数据范围与约定】
本题共 10 个测试点
测试点 1-4: 1 ≤ n, m, k ≤ 103
测试点 5-7: 1 ≤ n, m ≤ 105 , 1 ≤ k ≤ 40
测试点 8-10: 1 ≤ n, m ≤ 106 , 1 ≤ k ≤ 1000
对于所有数据,1 ≤ T ≤ 5
C. 一二的字符串 (string) 6
2022 年淮安市青少年程序设计培训
D. 三团的询问 (query)
时间限制: 2 seconds
【题目描述】
三团想构造一个优美的序列。
序列的每个位置都有 Ki 个值待选,选 Vij 这个值需要付出 Cij 的代价。
选择完序列 A1 , A2 , . . . , An 后,三团会进行一些询问。
对于区间 [l, r], 三团会进行 Ql,r 次询问,每次询问产生 maxri=l Ai 的收益。
三团想知道,如何选择这个序列,收益减去代价最大,输出这个最大值。
【输入格式】
第一行一个 n, 表示序列长度。
下面 n 行,第 i 行输入 Qi,i 到 Qi,n 的值。
下面数据分为 n 块,每块的第一行一个 Ki ,表示第 i 个位置能选的数字个
数。
下面 Ki 行,每行两个数 Vi,j ,Ci,j ,表示值和代价。
【输出格式】
一行,一个数字,表示答案。
【样例输入输出】
D. 三团的询问 (query) 7
2022 年淮安市青少年程序设计培训
样例输入 1 样例输出 1
5 78
1 0 2 2 0
0 2 2 0
2 2 2
1 2
0
2
0 27
1 19
2
7 25
1 1
2
8 7
4 18
2
8 7
4 4
2
0 25
4 26
样例输入 2 样例输出 2
2 -145
1 1
1
2
1 100
2 50
1
1 100
D. 三团的询问 (query) 8
2022 年淮安市青少年程序设计培训
【数据范围与约定】
本题共 10 个测试点 ∑
测试点 1-2: 1 ≤ n ≤ 10, 1 ≤ ∑ Ki ≤ 30, 0 ≤ Vi,j ≤ 30
测试点 3-4: 1 ≤ n ≤ 40, 1 ≤ ∑Ki ≤ 200, 0 ≤ Vi,j ≤ 200
测试点 5-6: 1 ≤ n ≤ 100, 1 ≤ ∑Ki ≤ 200, 0 ≤ Vi,j ≤ 108
测试点 7-10: 1 ≤ n ≤ 300, 1 ≤ Ki ≤ 3 ∗ 105 , 0 ≤ Vi,j ≤ 108
对于所有数据,0 ≤ Ci,j ≤ 1013 , 0 ≤ Qi,j ≤ 999
注意:中间过程计算时可能需要用到 __int128
D. 三团的询问 (query) 9