周总结 round 2

P4183 [USACO18JAN]Cow at Large P

发现了一个性质:只要贝西不想被一个农夫追上,她就一定不会被一个农夫追上(尽管这样可能和其他农夫撞个满怀),因为二者速度相同。

于是我们确定了农夫的策略:到达一个点后把守住这个点及其子树,这样贝西就无法从这棵子树通过。不要想着全体主动出击,这和把守一个点效果相同,但无法有效统计答案。

设农夫初始点在 \(v\),贝西初始点在 \(u\),则农夫能阻止贝西通过一个点 \(x\) 当且仅当 \(dis(v,x)<=dis(u,x)\)

同时为了保证最优,我们选取这些点中深度最浅的唯一一个节点放一个农夫。当一个点的父亲能被一个叶子管辖,我们自然无需统计这个点的答案。于是我们再次改变策略:设点 \(u\) 距离最近叶子节点的距离为 \(d_u\),我们放置一个农夫用于管辖点 \(v\),当且仅当 \(g_v<=dis(u,i)\)\(g_{fa[v]} > dis(u,i)\)

我们看一眼转换后的问题:,对于 \(i \in [1,n]\),求出有多少个节点 \(g_v<=dis(u,i)\)\(g_{fa[v]} > dis(u,i)\)

我们并不是很好一个点一个点的统计。于是我们想,如果满足条件,这个子树贡献为 \(1\),那是极好的。

换成数学语言就是:

\[\sum_{i \in tree(u)} f(i) = 1 \]

其中 \(u\) 为农夫需要把守的点,我们想要 \(f(i)\) 的表达式。

发现这个子树的度数之和恰好是 \(2m-1\),于是 \(f(i)=2-deg(i)\)。于是最终的答案就是 \(\sum_{i \in [1,n]} (2-deg(i))[g_i <= dis(u,i)]\)

这玩意可以点分治,于是完了。

P5327 [ZJOI2019]语言

ZJOI 签到题,恐怖如斯。

思考暴力。我们对每个点开棵线段树,然后对于每次普及树链剖分树套树加。统计有几个元素大于 \(0\)

这过不了,因此我们考虑优化。

时间方面,好像并没有什么问题。

空间方面,每个点开棵线段树太大了,考虑线段树合并。但这样无法一个一个普及操作加过去,于是把普及操作拆成树上差分。于是做完了。

P1971 兔兔与蛋蛋

二分图博弈模板题,推荐阅读:

https://www.luogu.com.cn/blog/apple365/tu-tu-yu-dan-dan-ti-xie

FWT

FWT 模板题,推荐阅读:

https://www.cnblogs.com/closureshop/p/how-to-use-FWT.html

CF622C

考虑暴力。枚举每一行翻不翻转,剩下的列取 \(0\)\(1\) 小的那一个(可以通过一次翻转得到)。

0/1 翻转常见操作就是转异或。对于列的初始状态 \(j\) 与终止状态 \(k\),他们与行的翻转状态 \(i\) 的关系是 \(j \oplus k= i\)。于是我们设 \(f_i\) 表示行翻转状态为 \(i\) 时的答案,\(a_i\) 为初始列中有多少为 \(i\) 的状态,\(b_i\) 为状态 \(i\)\(0\)\(1\) 个数的较小值,则:

\[f(i) = \sum^{}_{j \oplus k}a_i \times b_i \]

这是异或卷积的形式,卷卷就好。

P3214 卡农

每一元素出现次数为偶数的限制很强,考虑如果最终集合为 \(i\) 个,我们已经得知前 \(i - 1\) 个集合,最后一个集合完全可以推出来。

于是设 \(dp_i\) 为使用 \(i\) 个集合的方案数。则貌似 \(dp_i=A_{2^n-1}^{i-1}\)

发现了不合法的情况。第一种,需要的集合是空集。此时前 \(i-1\) 个构成合法方案,所以要减去 \(dp_{i-1}\)

第二种,需要的集合出现过。此时把当前集合与重复的集合剔除,剩下 \(i-2\) 个构成合法方案。所以要减去 \((i-1)(2^n-i-1)f_{i-2}\)。其中 \(i-1\) 为集合位置,\(2^n-i-1\) 为集合元素。

减减就没了。

P6622 信号传递

我直接错误复杂度爆草,他要卡空间恶心我我干嘛惯着他。

P6623 树

trie 树是棵树,trie 树存储信息,trie 树的信息添加简单,trie 树可爱,所以 trie 树可以合并统计信息(方法类似于同样可爱的线段树)。

小学二年级时学过,trie 树 +1 就是交换左右儿子,于是这道题做完了。

P2020 兔农

留给各位听过杂题选讲的同学发挥🤭

还有些简单题,就不放上来了。

posted @ 2023-03-19 20:01  _maze  阅读(27)  评论(0编辑  收藏  举报