写在前面:为了保护正睿题目版权,这里不放题面,只写题解。
“这应该是正睿OI历史上第一次差评破百的比赛。”
“这说明来正睿集训的人越来越多了。”
“我很不能理解差评,因为在比赛开始前就有超过(40)个差评了。”
天祺鸽鸽nb!
- A
“这题标程是线性的,可是为什么没有出(5 imes 10^6)呢?因为spj要带个(log),这样就T了。”
(100pts:)
打表观察发现有解当且仅当(sum k^{-a_i}geq 1)。
不失一般性,我们可以证明(sum k^{-a_i}= 1)时有解。
为了让(sum k^{-a_i}= 1),我们发现排好序后最后(k)个数一定是相等的(多余的数可以删掉,不影响结果)。
(kcdot k^{-a_i}=k^{-(a_i-1)}),所以把(k)个(a_i)改成(1)个(a_i-1)总贡献不变。
实现的时候,可以把(k)个(i)转化成(1)个(i-1),最终得到一个(0)则有解。
输出方案排序后贪心即可,优秀的实现可以做到线性。
- B
(42pts:)
由于([l_2,r_2])互不相交,发现区间长度之和不会超过(n),暴力并查集即可。
复杂度(O(n cdot alpha n))。
(100pts:)
仍然是由于([l_2,r_2])互不相交,对于每个([l_2,r_2])向([l_1,r_1])连边,发现每个([l_2,r_2])只会有一个父亲,形成了一个天然的树形结构。
对于每个插入和询问,都在树上暴力地跳父亲,跳到根节点一起处理即可。
唯一的一个问题是,如果([l_1,r_1])和([l_2,r_2])相交,可能会需要暴力跳过整个区间。
如果两个区间相交超过一半,则一定有循环节,对循环节取模即可。
复杂度(O(m^2))。我并查集学傻了
- C
显然图中每个连通块都要有偶数条边,且每个点度数都是奇数。
问题等价于,找(frac{n}2)条链覆盖所有边,要求端点覆盖每个点且边不相交。此外要求每条链长度都是偶数。
考虑没有偶数的限制怎么做,显然建虚点跑欧拉回路就可以。
(10pts:)
对于完全图,发现只有(4|n)时才有解。
考虑每次加入(4)个点,内部构造显然,与之前(4n)个点连边是一个度数均为偶数的二分图,很好做。
(65pts:)
爆搜,我也不知道为什么跑那么快。
(100pts:)
考虑求出一个(frac m2)条链的链覆盖。假设已经求出了,我们建一张新图,如果存在一条链直接连接((x,y)),则在新图中连一条((x,y))的边。显然新图中度数的奇偶性不会改变,在新图中跑欧拉回路,最后把每条链拆开即可。
考虑如何求这个链覆盖。
在图里建一棵dfs树,则非树边一定是返祖边。
对于每条边都在深度较浅的点考虑,这样到某个节点时,与它有关的剩余边一定只包含:它的儿子与它之间的边,它的子树中向它连的返祖边,它连向父亲的边。对前两类边匹配,如果有剩余就匹配掉到父亲的边。由于边数为偶数,根节点一定可以匹配。
写在后面:
这场同时是正睿历史上评价波动最大的一场比赛。虽然在某些人的操纵下最后还是变成了负数,但是仍然在中途达到了(+30),我也很荣幸记录下了这一刻。
原因很有趣,也很悲伤。
“由于小K受伤了,因此许多朋友都去慰问他。”
“小K正在忙着恢复服务器中丢失的一份数据。”
“小K拥有(n)个工作室,这(n)个工作室之间用(m)条道路相互连接。”
小K代表什么呢?相信大家已经知道了。
这也是我第一次对这道题的出题人产生由衷的敬意。