ICode9

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

【题解】CF1466H Finding satisfactory solutions

2021-08-29 17:34:47  阅读:177  来源: 互联网

标签:satisfactory 系数 个点 题解 入度 容斥 点集 DAG Finding


洛谷的题面是经过转化的,但是为了翻译就直接看了洛谷的题面

首先所有白色边一定连成若干环,黑色边一定满足如下要求:同一白色环的两点之间没有黑色边,不同白色环中的黑色边不属于仍以一个环。

注意到如果将白色环缩为点,那么第二个条件可以表示成:在点与点之间连边使得最后形成 DAG 。

DAG 计数是经典套路了,具体方式为:令 \(f_S\) 表示点集 \(S\) 连为一个 DAG 的方案数,转移可以考虑入度为 \(0\) 的点集 \(T\),注意到不能保证剩下的点中全部入度非零,所以转移的时候还需要带上系数 \((-1)^{|T|+1}\) 。

因为不需要知道点的标号,只需要知道环的大小,所以可以将状态压一压,有效的状态个数极少,直接做就行。

考虑一下系数:\(h(i,j)\) 表示 \(i\) 个点向 \(j\) 个点连边(这 \(i\) 个点都只能连这 \(j\) 个点中的点),那么有 \(h(i,j)=g(j)^i\),其中 \(g(j)\) 表示一个点连 \(j\) 个点的方案,枚举连出的边数 \(0\leq k\leq j\),然后用组合数计算即可。

关于容斥系数:考虑构造容斥系数 \(f_i\) 表示 \(|T|=i\) 时的容斥系数,注意到一个入度为 \(0\) 的点集 \(T\) 被计算的次数应当为:

\[\sum_{U\subseteq T,U\not=\empty}f_{|U|}=\sum_{i=1}^{|T|}{|T|\choose i}f_{i}=1 \]

注意到 \(f_i=(-1)^{i+1}\) 恰好满足要求(可以考虑 \(f_i=(-1)^i\),通过二项式定理发现右边此时为 \(-1\),所以 \(f_{i}=(-1)^{i+1}\))。

代码:Submission #127315323 - Codeforces

标签:satisfactory,系数,个点,题解,入度,容斥,点集,DAG,Finding
来源: https://www.cnblogs.com/qiulyqwq/p/15203034.html

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

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

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

ICode9版权所有