省流
仅做出两题,结果凭借手速拿到表现分 \(1740\)。
10.17
内含剧透,请vp后再来。
不是题解!!!!!!!
赛前
早上花了很多时间试图把 \(stars569\) 搞的数据库装好,结果搞了半天缺一堆东西,愤而开始摸一把比赛。
https://github.com/stars569/ACM_Summary
星辰的项目,可以统计做了什么题,以及根据加入时间和难度来个艾宾浩斯记忆法复习,背单词式 \(ACM\),你值得拥有。
赛时
A 题模拟,不谈。
B 题要求用二进制表示一个数 \(x\),但新引入了一个值 \(-1\),以及要求不能有两个连续的非零数,问如何表示。可以想到形如 \(1110\) 的连续 \(1\) 可以表示为 \(-1001\),按这个思路模拟就行。
C 题给了 \(n \leq 2000\) 个数,要求取一个子集,使子集内所有数的 \(lcm\) 不存在于一开始的 \(n\) 个数中。问子集最大为多大。我主要从两个方面想,构造和 \(DP\)。通过构造,想要塞入尽可能多的数,那么全部塞满,此时 \(lcm\) 只会是大于等于最大值的数,然后枚举最大值和大于等于最大值的所有数就是 \(n^2\) 级别的,但不知道该怎么做。猜了一个相同最大值只会删掉一个较小的,但不能通过样例。\(DP\) 也很容易想 \(n^2\) 级别的,状态存储现在是第几个前面最大选了多少个,但没有很好的想到该存什么。肯定不能存所有的可能 \(lcm\),如果全是质数肯定就炸了,所以也不了了之。感觉肯定和因数有关,但没有什么很好的思路,就这样耗过了 \(110min\),比赛结束。
赛后
看 C 题解,还是先判断是否可以全选。如果不可以,那么证明所有数的 \(lcm\) 就是最大值。所以所有数任意组合的 \(lcm\) 都是最大值的约数,所以枚举最大值的所有约数,把是这个约数的约数的值加入进来以求找到这个约数,最后再验证得到的实际值有没有出现,如果没有则是答案的候选。时间复杂度就是 \(O(\log {1e18} * n * \sqrt{max})\)。
2025年10月17日