[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})\)

posted @ 2021-06-08 17:20  Isenthalpic  阅读(44)  评论(0编辑  收藏  举报