【题解】有标号的DAG计数1
[HZOI 2015] 有标号的DAG计数 I
设\(f_i\)为\(i\)个点时的DAG图,(不必联通)
考虑如何转移,由于一个DAG必然有至少一个出度为\(0\)的点,所以我们钦定多少个出度为\(0\)的点转移。
考虑如何保证没有环,钦定完出度为\(0\)的点后,这些点就等着被连接了。还剩下一些点,这些点只要不构成环就好了,就是个子结构,访问以前的DP数组就好了。
\]
这样转移显然有方案重复的情况,因为如此计数就破坏了钦定,出度为\(0\)点可能更多!(我们不加限制的枚举\(j(i-j)\)条边是否存在)。
考虑一种方案出现了多少次,很显然出现的分布是这样的:
\]
借鉴一下[【题解】HAOI2018]染色(NTT+容斥/二项式反演)(怎么又是你),直接乘上一个\((-1)^?\)就就容斥掉了,试一试就发现是\((-1)^{j+1}\)
转移是:
\]
或者学习神Itst的神仙待定系数法
设枚举的出度为\(0\)的点的个数为i时的容斥系数为\(f_i\),那么一个实际上存在\(x\)个出度为0的点的DAG的贡献就是\(\sum\limits_{i=1}^x \binom{x}{i} f_i = 1\),不难由二项式定理知道\(fi=(−1)^{i−1}\)
orz orz
//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; typedef long long ll;
inline int qr(){
register int ret=0,f=0;
register char c=getchar();
while(c<48||c>57)f|=c==45,c=getchar();
while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxn=5e3+5;
const int mod=10007;
int c[maxn][maxn];
int dp[maxn];
int bin[maxn*maxn];
int main(){
freopen("DAG.in","r",stdin);
freopen("DAG.out","w",stdout);
int n=qr();
bin[0]=1;dp[0]=1;
for(register int t=0;t<=n;++t){
c[t][0]=1;
for(register int i=1;i<=t;++i){
c[t][i]=(c[t-1][i-1]+c[t-1][i])%mod;
}
}
for(register int t=1;t<=n*n;++t) bin[t]=(bin[t-1]<<1)%mod;
for(register int t=1;t<=n;++t){
for(register int i=1,d;i<=t;++i){
d=mod-c[t][i]*bin[i*(t-i)]%mod*dp[t-i]%mod;
if(i&1) d=mod-d;
dp[t]=(dp[t]+d)%mod;
}
}
printf("%d\n",dp[n]);
return 0;
}
【题解】有标号的DAG计数1的更多相关文章
- 【题解】有标号的DAG计数4
[HZOI 2015] 有标号的DAG计数 IV 我们已经知道了\(f_i\)表示不一定需要联通的\(i\)节点的dag方案,考虑合并 参考[题解]P4841 城市规划(指数型母函数+多项式Ln),然 ...
- 【题解】有标号的DAG计数3
[HZOI 2015] 有标号的DAG计数 III 我们已经知道了\(f_i\)表示不一定需要联通的\(i\)节点的dag方案,考虑合并 参考[题解]P4841 城市规划(指数型母函数+多项式Ln), ...
- 【题解】有标号的DAG计数2
[HZOI 2015] 有标号的DAG计数 II \(I\)中DP只有一个数组, \[ dp_i=\sum{i\choose j}2^{j(i-j)}dp_{i-j}(-1)^{j+1} \] 不会. ...
- 有标号的DAG计数(FFT)
有标号的DAG计数系列 有标号的DAG计数I 题意 给定一正整数\(n\),对\(n\)个点有标号的有向无环图(可以不连通)进行计数,输出答案\(mod \ 10007\)的结果.\(n\le 500 ...
- COGS2356 【HZOI2015】有标号的DAG计数 IV
题面 题目描述 给定一正整数n,对n个点有标号的有向无环图进行计数. 这里加一个限制:此图必须是弱连通图. 输出答案mod 998244353的结果 输入格式 一个正整数n. 输出格式 一个数,表示答 ...
- COGS2355 【HZOI2015】 有标号的DAG计数 II
题面 题目描述 给定一正整数n,对n个点有标号的有向无环图(可以不连通)进行计数,输出答案mod 998244353的结果 输入格式 一个正整数n 输出格式 一个数,表示答案 样例输入 3 样例输出 ...
- COGS 2353 2355 2356 2358 有标号的DAG计数
不用连通 枚举入度为0的一层 卷积 发现有式子: 由$n^2-i^2-(n-i)^2=2*i*(n-i)$ 可得$2^{i*(n-i)}=\frac{{\sqrt 2}^{(n^2)}}{{\sqrt ...
- 有标号的DAG计数 III
Description 给定一正整数n,对n个点有标号的有向无环图进行计数,这里加一个限制:此图必须是弱连通图.输出答案 mod 10007 的结果. Solution 弱连通图即把边变成无向之后成为 ...
- 有标号的DAG计数 II
Description 给定一正整数n,对n个点有标号的有向无环图(可以不连通)进行计数,输出答案mod 998244353的结果 Solution 考虑 \(O(n^2)\) DP 枚举出度为 \( ...
随机推荐
- python环境测试MySQLdb、DBUtil、sqlobject性能
python环境测试MySQLdb.DBUtil.sqlobject性能 首先介绍下MySQLdb.DBUtil.sqlobject: (1)MySQLdb 是用于Python连接Mysql数据库的接 ...
- Vue电商后台管理系统项目第2天-首页添加表格动态渲染数据&分页
0x01.使用Github学习的姿势 基于昨天的内容,今天的内容需要添加几个单文件组件,路由文件也需要做相应的增加,今天重点记录使用Element-UI中的表格组件实现数据动态渲染的实现流程和分页功能 ...
- hihoCoder#1239 Fibonacci
#1239 : Fibonacci 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given a sequence {an}, how many non-empty s ...
- React Native中pointerEvent属性
在React Native界面开发中, 如果使用绝对定位布局,在代码运行时的某个时刻有可能会遮盖住它的下方的某个组件.这是因为绝对定位只是说这个组件的位置由它父组件的边框决定. 绝对定位的组件可以被认 ...
- 使用epoll实现简单的服务器
1. 头文件 #ifndef __TCP_SERVER_H__ #define __TCP_SERVER_H__ #include <unistd.h> #include <stdi ...
- 10-1 body标签里面相关的标签(列表,表单,表格)
一 列表标签<ul>,<ol>,<dl> <!DOCTYPE html> <html lang="en"> <he ...
- j2se--异常机制
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/quwenzhe/article/details/35610853 java异常机制中主要包含一个 ...
- MySQL 8.0 技术详解
MySQL 8.0 简介 MySQL 5.7 到 8.0,Oracle 官方跳跃了 Major Version 版本号,随之而来的就是在 MySQL 8.0 上做了许多重大更新,在往企业级数据库的路上 ...
- linux lvm删除导致无法启动
要想编辑/etc/fstab文件,我们需要在系统中重新挂载根目录,使其具有可读写状态,使用如下命令: mount -o remount,rw / 该条命令的作用是,以可读写的形式重新挂载根分区. 然后 ...
- linux自动挂载NTFS格式移动硬盘
转自:http://blog.163.com/cmh_lj/blog/static/100812304201252522119264/ 由于移动硬盘还有不少的资料,刚插入移动硬盘的时候发现只能自动挂载 ...