W
H
X

Codeforces Global Round 7

Codeforces Global Round 7

E

答案显然单调不增,那么初始答案为 \(res=n\),不断判定并减小答案直到可行。判断方法:把有删除操作的地方记上 \(-1\),把 \(p_i\ge n\) 的地方记上 \(+1\),若最大的后缀和 \(>0\),则 \(res\) 可行。这些操作都可以用线段树完成

F1

\(s\) 折半,每一边有 \(2^{\frac{n}{2}}\) 种情况,每种用朴素 \(dp\) \(2^nn\)暴力处理,然后合并,总复杂度 \(O(2^{1.5n}n)\)

F2

大致说一下

进行容斥,设 \(res_i\)\(01\)\(i\) 的答案,先计算 \(S_i=\sum\limits_{j|i=j}res_j\),然后再推出 \(res\)\(S_i\) 的意思就是 \(i\)\(1\) 的地方依旧必须是认识的,但为 \(0\) 的地方无所谓,这样转化使得限制条件变少了。然后发现,如果 \(A\)\(B\) 的划分情况相同(长度为 \(1,2,3\dots\) 的连续 \(1\) 段数量均相同),则 \(S_A=S_B\)。那么只要计算 \(P(n)\) 种情况即可。设划分成了 \(m\) 段,长度为 \(l_1,l_2,l_3\dots\),也就是要在原图中找到 \(m\) 条不相交的长度为 \(l_1+1,l_2+1\dots\) 的链(长度为 \(L\) 的连接了 \(L+1\) 个人)。“不相交”可以转化为总共有 \(n\) 个人。先求出 \(f_{i,j}\) 表示走到 \(i\),走过的集合为 \(j\) 的方案数,由此可以得出 \(g_{i,j}\) 表示走了 \(i\) 步,走过的集合为 \(j\) 的方案数,然后对 \(g_{i,*}\) 来一下 \(fwt\),计算 \(t_j=\prod g_{l_i+1,j}\),把 \(t\) 变换回来,\(t_{2^n-1}\) 就是答案。

但是常数大了就过不了,很多题解的代码也过不了,应该是 \(CF\) 的评测机变慢了。

G

posted @ 2021-07-05 17:06  -敲键盘的猫-  阅读(36)  评论(0编辑  收藏  举报