待补 重要思考:求给无向图定向使得其变为DAG的方案数
今天比赛考到了,不会,丢了 100 分。
rk2,380 -> rk15,280
别问为什么 T4 没过,因为不会 T2。
方法一 \(O(3^n)\)
令 \(f_S\) 为子集 \(S\) 内定向得到 DAG 的方案。
\(f_S = \sum\limits_{\emptyset \not= T\subset S, \text{T 为独立集}} (-1)^{|T| - 1}f_{S - T}\)
考虑 DAG 的分解构造过程,可以将其分为出/入度等于 \(0\) 的最大点集,删除/剥离一层继续这样,考虑逆向构造 DAG,但是发现存在重复计数,可以采用容斥,对于非空点集 \(T\),容斥系数为 \((-1)^{|T| - 1}\)。
关于容斥系数:有机会总结一下。关于本题,设 \(T\) 的计算容斥系数为 \(g(T)\),而真实容斥系数为 \(1\),根据计算方式,大的会被每个小的计算一次(有些时候是有关组合数的系数,但这里根据定义和公式是 \(1\) 次),于是有 \(\forall S, \sum\limits_{T\subset S}g(T) = 1\)
可以构造 \(g(T) = (-1)^{|T| - 1}\)
枚举子集复杂度 \(O(3^n)\)。考虑是不是可以 \(O(3^n)\) 求得容斥系数?
code
const int N = 20;
const int mod = 1e9 + 7;
int n, m;
int to[N];
int f[1 << N], g[1 << N];
inline void qadd(int &a, int b) {
a += b;
if (a >= mod) a -= mod;
}
void calc() {
read(n, m);
rep (i, 1, m) {
int a, b; read(a, b);
--a; --b;
to[a] |= 1 << b;
to[b] |= 1 << a;
}
g[0] = 1;
rep (s, 1, (1 << n) - 1) {
rep (j, 0, n - 1) {
if (s >> j & 1) {
g[s] = g[s ^ (1 << j)] & ((s & to[j]) == 0);
break;
}
}
}
f[0] = 1;
rep (s, 1, (1 << n) - 1) {
for (int t = s; t; t = (t - 1) & s) {
if (g[t] && f[s ^ t]) {
if (__builtin_popcount(t) & 1) qadd(f[s], f[s ^ t]);
else qadd(f[s], mod - f[s ^ t]);
}
}
}
write(f[(1 << n) - 1]);
}
方法二 \(O(n^22^n)\)
貌似子集卷积,记得补
待补 重要思考:求给无向图定向使得其变为DAG的方案数的更多相关文章
- poj 3734 方块涂色 求红色 绿色方块都为偶数的方案数 (矩阵快速幂)
N个方块排成一列 用红,蓝,绿,黄4种颜色去涂色,求红色方块 和绿色方块个数同时为偶数的 方案数 对10007取余 Sample Input 212Sample Output 2//(蓝,黄)6//( ...
- 33、求按从小到大的顺序的第N个丑数
一.题目 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 二.解法 ...
- P1466 集合 Subset Sums(01背包求填充方案数)
题目链接:https://www.luogu.org/problem/show?pid=1466 题目大意:对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合, ...
- P1474 货币系统 Money Systems(完全背包求填充方案数)
题目链接:https://www.luogu.org/problemnew/show/1474 题目大意:有V种货币,求用V种货币凑出面值N有多少种方案. 解题思路:就是完全背包问题,只是将求最大价值 ...
- poj3254 Corn Fields 利用状态压缩求方案数;
Corn Fields 2015-11-25 13:42:33 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10658 ...
- Codeforces 509F Progress Monitoring:区间dp【根据遍历顺序求树的方案数】
题目链接:http://codeforces.com/problemset/problem/509/F 题意: 告诉你遍历一棵树的方法,以及遍历节点的顺序a[i],长度为n. 问你这棵树有多少种可能的 ...
- CF 149D Coloring Brackets(区间DP,好题,给配对的括号上色,求上色方案数,限制条件多,dp四维)
1.http://codeforces.com/problemset/problem/149/D 2.题目大意 给一个给定括号序列,给该括号上色,上色有三个要求 1.只有三种上色方案,不上色,上红色, ...
- 剑指offer33:求按从小到大的顺序的第N个丑数。
1 题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 2 ...
- C语言:求n(n<10000)以内的所有四叶玫瑰数。-将字符串s1和s2合并形成新的字符串s3,先取出1的第一个字符放入3,再取出2的第一个字符放入3,
//函数fun功能:求n(n<10000)以内的所有四叶玫瑰数并逐个存放到result所指数组中,个数作为返回值.如果一个4位整数等于其各个位数字的4次方之和,则称该数为函数返回值. #incl ...
- C语言:找出一个大于给定整数m且紧随m的素数,-求出能整除x且不是偶数的数的个数,
//函数fun功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回. #include <stdlib.h> #include <conio.h> #include & ...
随机推荐
- Oracle ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
转载☞:https://blog.csdn.net/qq_25221835/article/details/82762416 ROW_NUMBER 语法 语法格式:row_number() over( ...
- Spring(XML方式)简单入门
环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- 用这开源小书学 Docker,香!
> 最新.全面.通俗.可多端阅读的 Docker 教程小书.>> 编程导航开源仓库:https://github.com/liyupi/code-navDocker 可以说是一个改变 ...
- Figma数值输入框支持拖拽调整功能实现
最近再研究Figma的一些功能设计, 对其中的数值输入框可以直接鼠标拖拽的这个设计印象非常深刻. 这里用了其他网友的一张动态截图演示一下效果. 实际这个拖拽的功能不止看到的这么简单, 在深度研究使用之 ...
- 记录荒废了三年的四年.net开发的第二次面试(进复试了)
这次面试的是小公司,深圳计通智能,面试分为初试和复试.使用腾讯视频会议完成.相比与上次面试,这次有所进步,进复试了.当然,这可能也与面试风格有关.这次面试着重与项目经历和技术,因此回答比较顺畅. 这一 ...
- 在Django REST framework (DRF) 中,`request.query_params` 和 `request.data` 区别
在Django REST framework (DRF) 中,request.query_params 和 request.data 都是用来获取请求中的数据,但是它们之间有一些关键的区别: requ ...
- mybatisplus关于驼峰命名法与下划线的映射
今天遇到一个很坑的事情,我在测试之前的案例的时候我有一个字段的名字是typeId,我调试之后发现插入出现了错误. 开启sql日志之后我发现mybatisplus自动把我的typeId改成type_id ...
- vue-puzzle-vcode与vue-drag-verify纯前端的拼图人机验证、右滑拼图验证
转载作品!以获取原作者允许,原文地址,感觉写的比较全面,也比较实用,大家可以去看看原文章: 纯前端的拼图人机验证.右滑拼图验证 1.vue-puzzle-vcode github地址:https:// ...
- conda/anconda报错:WARNING conda.models.version:get_matcher(556): Using .* with relational operat
conda/anconda报错:WARNING conda.models.version:get_matcher(556): Using .* with relational operat 解决方法, ...
- 【转载】 miniImageNet数据集介绍
版权声明:本文为CSDN博主「miguemath」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/wangkai ...