A. Dislike of Threes
打表
B. Who's Opposite?
(a)和(b)相隔(dfrac{n}{2}),然后就可以算出(n)。
如果(a, b, c)不在([1, n])内则无解。
然后在找出和(c)相隔(dfrac{n}{2})的点就行了。
C. Infinity Table
([1, x^2])的元素位于左上角边长为(x)的正方形内。
找到(x ^ 2 < k)的最大的(x),然后再分类讨论出坐标。
D. Make a Power of Two
对于操作2,之后必定不会再用操作1删掉,这样就不如不添加。
然后就可以推出必定是先通过操作1把给定树搞成某个满足条件的树的前缀,然后再通过操作2补足剩余的位置。
满足条件的数不多,直接枚举。
E. Polycarp and String Transformation
可以逆着推。
最后一个字符串必定是最后一个删除的字符,往前找到一个后面没有的字符,这个字符就是倒数第二个删除的字符,以此类推,就可以得出删除序列。
根据删除序列,又可以根据字符出现的次数推出原始字符串:假设现在执行完了第(k)步,这一步删除的字符为ch
,那么当前(t)中,ch
的出现次数除以k
就是初始时(s)中ch
出现的次数。然后逆着跑一遍,就可以跑出原始序列。
现在的原始序列不一定时正确的,再根据原始序列和操作序列得出(t^prime),看是否和(t)相同。
F2. Nearest Beautiful Number (hard version)
大于等于,可以直接判断等于。
现在只需要考虑大于的情况,而大于等价于:数某个前缀相等,接下来一位大,后续就可以全部填最小值。然后枚举是那一位大就完事了。