【比赛记录】CFR959(Div.1+2)

· · 个人记录

记录

ABCD 切,E 不会,后来发现是结论题。(上紫了啊)

题解

A. Diverse Game

显然把每个数增加 1nm 变成 1,除 n=m=1 外均有解。

B. Fun Game

首先发现只用一位去修改 s_x 影响最小,所以先找到 s 中第一个 1 的位置 p。那么对于所有 x>ps_x 都可以通过选以其为结尾的 p 个字符来单点修改,最后 s_p 也可以通过选前 p 个来变成 1。所以当且仅当 s 中与 t 不同的位置均在第一个 1 之后就合法,否则非法。

C. Hungry Games

考虑枚举 l,求出答案非零的 r 数量。那么设 f_i 表示以 il 时后面答案为 0r 数量,则 f_i=f_{nxt_i+1}+1,其中 nxt_i 表示从 l 开始取到这一位正好大于 x,而取到上一位不大于。这个东西在前缀和上二分一下就行,对所有的 n-i+1-f_i 求和即为答案。

D. Funny Game

倒着考虑,也就是从 n-1 一直到 1。发现 i\mid (a_u-a_v) 等价于 a_u \equiv a_v\mod i,而对 i 取模的结果有 i 种,此时有 i+1 个连通块,根据抽屉原理一定能连出一条边。所以倒着考虑的时候暴力找到一对不连通的合法点连起来即可。

赛时对每一种余数分别平方找的,时间复杂度好像 O(n^3),但跑得很快。其实如果对于每一组,若第一个与其他的都在同一连通块就可以跳出了,这样复杂度就是 O(n^2) 的了,150ms 减到了 100ms。