[GDOI2018]滑稽子图
题目链接:【被和谐】
题目大意:对于一棵树$(V,E)$,对于$S\subset V$,$f(S)$为点集$S$的导出子图的边数。求$\sum_{S\subset V}f(S)^k$
这里的导出子图说的是,点集为S,边集为$\{(u,v)\in E|u,v\in S\}$的一个子图。
看到这个$k$次方,马上用斯特林数。
$$ans=\sum_{S\subset V}f(S)^k=\sum_{i=0}^ki!S(k,i)\sum_{S\subset V}{f(S)\choose i}$$
然后考虑怎么求后面那个式子。
这个式子表示在$S$的导出子图里面选$i$条边的方案数,然后就可以树形dp了
设$dp_{x,s,0/1}$表示在以$x$为根的子树内部,选择$s$条边,$x$是否$\in S$的答案。
在新加上一个$x$的子树$v$的时候,$S$只有原来和只有新的子树的情况直接加上就行。
还有合在一起的情况,设原来的子树有$j$条边,$v$里面有$k$条边。
则$$dp[x][j+k][0]+=(dp[v][k][0]+dp[v][k][1])*dp[x][j][0]$$$$dp[x][j+k][1]+=(dp[v][k][0]+dp[v][k][1]+[k\not= 0]dp[v][k-1][1])*dp[x][j][1]$$
上面那里为什么要加$dp[v][k-1][1]$呢?因为这时$x$和$v$都在点集里,可以选择$(x,v)$这条边。
注意合在一起的情况还要统计进答案里。
而且由于会出现贡献到自己的情况,所以要用一个辅助数组来存储。
#include<cstdio>
#include<cstring>
#define Rint register int
using namespace std;
typedef long long LL;
const int N = , mod = ;
int n, m, K, head[N], to[N << ], nxt[N << ], size[N];
inline void add(int a, int b){
static int cnt = ;
to[++ cnt] = b; nxt[cnt] = head[a]; head[a] = cnt;
}
LL dp[N][][], f[][], ans[], S[][];
inline void dfs(int x, int fa){
size[x] = ;
dp[x][][] = ; dp[x][][] = ; ++ ans[];
for(Rint i = head[x];i;i = nxt[i])
if(to[i] != fa){
dfs(to[i], x);
memcpy(f, dp[x], sizeof f);
for(Rint j = ;j <= K && j <= size[to[i]];j ++)
f[j][] = (f[j][] + dp[to[i]][j][] + dp[to[i]][j][]) % mod;
for(Rint j = ;j <= K && j <= size[x];j ++)
for(Rint k = ;k <= K - j && k <= size[to[i]];k ++){
LL S = (dp[to[i]][k][] + dp[to[i]][k][]) % mod;
LL s1 = dp[x][j][] * S % mod, s2 = dp[x][j][] * (S + (k ? dp[to[i]][k - ][] : )) % mod;
f[j + k][] = (f[j + k][] + s1) % mod;
f[j + k][] = (f[j + k][] + s2) % mod;
ans[j + k] = (ans[j + k] + s1 + s2) % mod;
}
memcpy(dp[x], f, sizeof f);
size[x] += size[to[i]];
}
}
int main(){
scanf("%d%d%d", &n, &m, &K);
for(Rint i = ;i < n;i ++){
int a, b;
scanf("%d%d", &a, &b);
add(a, b); add(b, a);
}
dfs(, );
S[][] = ;
for(Rint i = ;i <= K;i ++)
for(Rint j = ;j <= i;j ++)
S[i][j] = (S[i - ][j - ] + S[i - ][j] * j) % mod;
LL fac = , res = ;
for(Rint i = ;i <= K;i ++){
fac = fac * i % mod;
res = (res + fac * S[K][i] % mod * ans[i] % mod) % mod;
}
printf("%lld", res);
}
[GDOI2018]滑稽子图的更多相关文章
- GDOI2018 滑稽子图 [斯特林数,树形DP]
传送门并没有 思路 见到那么小的\(k\)次方,又一次想到斯特林数. \[ ans=\sum_{T} f(T)^k = \sum_{i=0}^k i!S(k,i)\sum_{T} {f(T)\choo ...
- 【gdoi2018 day2】第二题 滑稽子图(subgraph)(性质DP+多项式)
题目大意 [gdoi2018 day2]第二题 滑稽子图(subgraph) 给你一颗树\(T\),以及一个常数\(K\),对于\(T\)的点集\(V\)的子集\(S\). 定义\(f(S)\)为点集 ...
- 【gdoi2018 day2】第二题 滑稽子图
题意: 给出一棵树.设\(E\)表示边集,\(V\)表示点集,\(S\)为\(V\)的一个子集. \(f(S)=|(u,v)|(u,v)\in E \ \&\&\ u\in V\ \& ...
- 【GDOI】2018题目及题解(未写完)
我的游记:https://www.cnblogs.com/huangzihaoal/p/11154228.html DAY1 题目 T1 农场 [题目描述] [输入] 第一行,一个整数n. 第二行,n ...
- scrapy 也能爬取妹子图?
目录 前言 Media Pipeline 启用Media Pipeline 使用 ImgPipeline 抓取妹子图 瞎比比前言 我们在抓取数据的过程中,除了要抓取文本数据之外,当然也会有抓取图片的需 ...
- GDOI2018游记
前言 不知怎的,本蒟蒻居然拿到了GDOI参赛名额 于是乎,我稀里糊涂地跟着诸位大佬屁颠屁颠地来到了阔别已久的中山一中 腐败difficult and interesting的GDOI比赛就这样开始了. ...
- 最大半连通子图 bzoj 1093
最大半连通子图 (1.5s 128MB) semi [问题描述] 一个有向图G = (V,E)称为半连通的(Semi-Connected),如果满足:∀ u, v ∈V,满足u->v 或 v - ...
- [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图
第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...
随机推荐
- portfolio
1.工作量计算逻辑: 原始待办事项: 预估2个冲刺,如下图所示: Sprint1的故事点计划工作量5,空闲工作量28.如下图 Sprint2为预估冲刺,指的是预估待办事项在后续冲刺的预估计划,后续冲刺 ...
- 随笔:JS对象无new构造原理
var myFun = function(words) { if (!(this instanceof myFun)) { return new myFun(words); } this.name = ...
- xml 转map dom4j
http://ziyu-1.iteye.com/blog/469003 传过来一个xml文件,需要转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml. 转换规则: 1.主要是Map与 ...
- HTML jQuery实现的expend row
问 题:今天接到个任务,在一个老的系统页面里实现可展开的表格行. 寻找: 1.首先想到了在easyUI里见过的expand row form: 2.但是我们的老系统管理只有jQuery,如果使用eas ...
- 15适配器模式Adapter
一.什么是适配器模式 Adapter模式也叫适配器模式,是构造型模式之一 ,通过Adapter模式可以改变已有类(或外部类)的接 口形式. 二.适配器模式应用场景 在大规模的系统开发过程中,我们常常碰 ...
- 大杂烩 -- ArrayList的动态增长 源码分析
基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 问题:当ArrayList中放入的元素一直增加会如 ...
- web.xml配置DispatcherServlet (***-servlert.xml)
1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...
- aws平台中为ec2实例添加双网卡
亚马逊平台创建ec2实例时默认创建一个网卡primary网卡,主网卡是不能分离的. 在ec2服务控制台为ec2附加网卡. 平台资料中为正在使用的ec2添加网卡用到的操作系统是Amazon Linux ...
- 服务器虚拟化ESXi 5.5安装过程
研究服务器虚拟化实践小结: 实验服务器硬件: 主板 华硕P8B-C/2L CPU Intel Xeon E3-1230 V2 3.3GHz RAM 8G ECC 1600MHz 硬盘 2T 2块 软件 ...
- JS document.execCommand实现复制功能(带你出坑)
最近项目中需要实现功能:点击button,复制input框的值: 我使用的是 document.execCommand('copy')的方法: 但是很郁闷的是,始终实现不了功能:代码如下 HTML代码 ...