A. Milky Loong

大致题意:给你一个字符串,提取一部分文字出来和另一部分拼一起。

实际也非常简单,用 Python 随便水一水就可以了。毕竟是照顾初学者的签到题

B. 约瑟夫问题

大致题意:

n105n\le 10^5 个人围成一个圆,给定一个 2k92\le k\le 9,每个人轮流报数:

  • 如果这个数是 kk 的倍数、或者其十进制表示带有 kk 这个数字,那么这个人就被杀死
  • 报数的时候会跳过已经死掉的人

问最后活下来的是谁。

也毕竟简单。考虑到最多每 kk 个数字就会干掉一个人,因此最多 nknk 轮就会结束。

C.

F. 试飞

大致题意:

nn 个人里面有 mm 个人具有飞行经验,你的目标是选出两个有飞行经验的人试飞。

你每次可以选择任意 22 个人让其试飞,如果这两个人都具有飞行经验,则任务立刻结束;否则试飞失败。

你只能用至多 n2m\lfloor \frac{n^2}{m}\rfloor 次试飞完成目标。

非常有意思的一道题目。考察鸽巢原理。具体做法是,把这 nn 个人平分到 m1m-1 个组里,那么根据鸽巢原理,必然有一个组里有 22 个人具有飞行经验。

于是,我们直接对每一个组暴力枚举 pair.

由于是平分,每个组差不多 nm1\frac{n}{m-1} 人,因此一个组内的枚举次数为 12×(nm11)×nm1\frac{1}{2}\times(\frac{n}{m-1}-1)\times\frac{n}{m-1},而有 m1m-1 组,因此总枚举次数为

(m1)×12×(nm11)×nm1=n22(m1)nn2m \begin{aligned} &(m-1)\times\frac{1}{2}\times(\frac{n}{m-1}-1)\times\frac{n}{m-1}\\ =&\frac{n^2}{2(m-1)}-n\\ \le &\frac{n^2}{m} \end{aligned}