【题解】Solution Set - NOIP2024集训Day56 2-sat & 哈希

【题解】Solution Set - NOIP2024集训Day56 2-sat & 哈希

https://www.becoder.com.cn/contest/5640


「CF568C」New Language

做过的 2-sat 。


「JOISC 2020 Day1」汉堡肉

详细题意见 becoder


「模板」树同构

spdarkle's blog


独钓寒江雪

考虑一个树 dp。

fu,0=fv,0/1fu,1=fv,0Ans=f1,0/1

难点在于去重。

实际上方案重复,当且仅当子树中出现重构。(因为此时交换两棵同构且方案相同的子树时,方案相同

所以在合并子树的时候,我们自然的把等价类(就是同构的一堆子树),拎出来一起处理。

对于一个等价类,设每一颗子树的方案数为 m,个数为 n

考虑其对 fu 的贡献。就是我们给每个子树分配一种方案,不考虑顺序。

所以其对 fu 的贡献为 mnn!。(FAKE(因为在重复的时候,不止是除以 n! 那么简单。

现在问题其实等价于,m 个盒子,n 个球放入,可以空盒。

所以其对 fu 的贡献为 (n+m1m1)=(n+m1n)


注意要以重心为根做这个 dp。

如果我们让一个点为根节点,其满足存在另一个点为根后与之同构,那么这样的点是不能作为子树被去重到的。

所以我们要选一个点,以其为根,形成的有根树是唯一的,而重心就一定满足这个性质。

(FAKE(因为虚点的两个子树不能同时被选。

如果有两个重心,将她们两个连到一个虚点,然后以之为根正常做就行了。(最后输出的时候相当于钦定虚点不能成为独立集中的点。

正确的做法是:

将她们分开做,然后再合并就行了。(具体怎么合并可以见代码。


「NOI2024」集合

做过。

做法见 提交记录


「CSP-S2022」星战

简要题意:

给定有向图。

  • 修改

    1. 使一条边 失效/恢复;
    2. 使一个点的所有入边 失效/恢复。
  • 查询

    判断每个点是否出度都为 1,且能够走到一个环。


首先既然我们都保证了出度为 1,就一定合法。

这个用随机化 hash 是好 O(1) 判的,现在问题在于维护 修改 2。

哦!简单,先预处理出删每个点的入边的时候对总的 hash 值的影响,然后直接更新就行了。

posted @   CloudWings  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示