[vp]CF1536(div2)
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 \times \sum_{k|2}^{n} k!(C_{n-k-1}^{k-1}+C_{n-k}^{k})\)