https://codeforces.com/contest/1536
(A:)
有负数时无解,观察到(a leq 100)但(k leq 300),
输出(0)~(100)的整数即可。
(B:)
因为(n leq 1000),字母是(a)~(z),所以字符串的(mex)最多为(3),且字典序还很小
按字典序从小到大枚举(mex)字符串(或搜索),字符串(hash)检验。
(C:)
如果两段连续的比值相同,那么两段合起来比值也相同。
设(f_i)为前缀(i)的答案。
(f_i = max{ f_j }+1~(g(1,j)=g(j+1,i)))
查最大的二元组的值,用(map)维护。
(D:)
根据常识,每加两个数,中位数至多移动一个位置。
那么对于目前的中位数(x)和上次的中位数(y),
我们只需要判断值域(x)~(y)中有没有出现过其他数就好了。
这个可以用很多不同数据结构维护,
还有一个问题,每次我们要插入两个数,但我们只考虑了当前的(b_i),
因为(a_i)的值域是无穷大,只要看成插入一个极大或极小值就好了,根据决策包容性,这样想是对的
(E:)
结论:我们选择一些 "#" 为0时,那么整个方格的权值就确定了。
题目的约束条件容易让人想到(bfs),我们想象从每一堆(0) bfs,
那么所覆盖的区域就是确定的。(每次只能(+1))。
答案就是(2^k)((k)表示#的数量),如果全是#要(-1)
(F:)
结论:后手必胜。自证不难。
根据结论,最后的棋子个数是偶数。
并且是(BR)或(RB)交错的形式,中间有一些空格,用插板法计数。
对于一个有(k)个棋子的局势,有(k!)种顺序导出。
因为是环,考虑起始位置填还是不填。
所以最后的答案为:
(2 imes sum_{k|2}^{n} k!(C_{n-k-1}^{k-1}+C_{n-k}^{k}))