香港中文大学(深圳)2025 校赛暨粤港澳国际编程比赛
A. Milky Loong
大致题意:给你一个字符串,提取一部分文字出来和另一部分拼一起。
实际也非常简单,用 Python 随便水一水就可以了。毕竟是照顾初学者的签到题
B. 约瑟夫问题
大致题意:
有 n≤105 个人围成一个圆,给定一个 2≤k≤9,每个人轮流报数:
- 如果这个数是 k 的倍数、或者其十进制表示带有 k 这个数字,那么这个人就被杀死
- 报数的时候会跳过已经死掉的人
问最后活下来的是谁。
也毕竟简单。考虑到最多每 k 个数字就会干掉一个人,因此最多 nk 轮就会结束。
C.
F. 试飞
大致题意:
n 个人里面有 m 个人具有飞行经验,你的目标是选出两个有飞行经验的人试飞。
你每次可以选择任意 2 个人让其试飞,如果这两个人都具有飞行经验,则任务立刻结束;否则试飞失败。
你只能用至多 ⌊mn2⌋ 次试飞完成目标。
非常有意思的一道题目。考察鸽巢原理。具体做法是,把这 n 个人平分到 m−1 个组里,那么根据鸽巢原理,必然有一个组里有 2 个人具有飞行经验。
于是,我们直接对每一个组暴力枚举 pair.
由于是平分,每个组差不多 m−1n 人,因此一个组内的枚举次数为 21×(m−1n−1)×m−1n,而有 m−1 组,因此总枚举次数为
=≤(m−1)×21×(m−1n−1)×m−1n2(m−1)n2−nmn2