ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

妙妙题 noi.ac 2323 Connecting

2021-07-20 08:00:25  阅读:186  来源: 互联网

标签:2323 ac le 一个点 连通 bmod 13 Connecting 去掉


目录

题意

数一个 \(n\) 个点图的子连通块数,对 \(2\) 取模。即,#(选一个点集的子集,使得它连通)。空集不算。

\(n\le 50\)。对于边 \(u,v\),\(|v-u|\le 13\)

从数据入手

首先这个对 \(2\) 取模一看就性质很好,它有啥性质呢?

这个 \(|v-u|\le 13\) 似乎也有着一些性质:一个点的度数不会超过 \(27\);进一步,如果我们按顺序考虑点,它连向前面的点的边数 \(\le 13\)。

设一个点集 \(V\) 的子集 \(S\) 的导出子图的连通块数为 \(c(S)\)。我们要求:

\[(\sum\limits_{S\sube V,s\neq\empty} [c(S)=1] ) \bmod 2 \]

而我们的 \(c(S)\) 应该都 \(\ge 1\),所以不用考虑 \(0\),把 \(>1\) 的去掉即可。

但是要求 去掉。如果给 \(c(S)\) 模 \(2\),\(=3,=5...\) 那些还是会留下来。

要求 去掉,容易想到在 \(poly\) 题里面,会有模 \(x^n\) 以去掉 \(n\) 次项以上的方法。这题也同理,我们考虑

\(2^{c(S)}\bmod 4\)。\(c(S)=1\) 的时候会取到 \(2\),\(>1\) 的时候就变成了 \(0\)。那好办,最后给它除掉一个 \(2\) 即可。

这是这道题的精髓

其实你也可以用 \(3^{c(S)}\bmod 9\),但是那个就要复杂,不好 dp

然后这个东西的组合意义很好:假设已知了 \(S\),给每个连通块黑白染色(同一个块同色),方案数就是 \(2^{c(S)}\)。

但现在不知道 \(S\),我们相当于要先选一个 \(S\),再染色。但其实我们的条件还是不变:同一个块同色。转化一下(逆否条件),如果两个点异色,就不能再同一个块;再等价,就是 黑白两个点不能有边相连

如果要处理这个 “先选一个 \(S\)”,可以搞一个 "灰色”:表示不选某个点。灰色和黑白点间没有任何的限制,它单纯是为了区分选了和没选的点。

然后注意到一个点前面只有 \(13\) 个点,状压记录它们染了啥颜色,dp算一下即可。复杂度 \(O(n\times 3^{13})\)

标签:2323,ac,le,一个点,连通,bmod,13,Connecting,去掉
来源: https://www.cnblogs.com/LightningUZ/p/15033099.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有