题意:
给出一棵树。设\(E\)表示边集,\(V\)表示点集,\(S\)为\(V\)的一个子集。
\(f(S)=|(u,v)|(u,v)\in E \ \&\&\ u\in V\ \&\&\ v\in V\)。
求\(\displaystyle \sum_{S\subseteq V}f(S)^k\)对\(998244353\)取模的结果。
$n\leq100000,k\leq 10 $。
\
还是对二项式定理不是很熟悉啊。
处理这类和的\(k\)次方问题经常用到二项式定理。
\]
于是对于每个\(i\in [0,k]\),我们都维护\(f_{v,i}\)表示\(v\)的子树中\(\displaystyle \sum_{S\subseteq T}f(S)^i\)。
转移的时候就\(k^2\)转移就行了。
特别地,我们让\(0^0=1\),方便转移。
当然也可以用斯特林数
n^m=\sum_{i=0}^m\begin{Bmatrix}m\\i\end{Bmatrix}\binom{n}{i}i!
\]
我们有组合恒等式
\binom{a+b}{k}=\sum_{i=0}^k\binom{a}{i}\binom{b}{k-i}
\]
然后就可以同样的\(k^2\)。
代码:
#include<bits/stdc++.h>
#define ll long long
#define N 100005
using namespace std;
inline int Get() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while('0'<=ch&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}
const ll mod=998244353;
ll ksm(ll t,ll x) {
ll ans=1;
for(;x;x>>=1,t=t*t%mod)
if(x&1) ans=ans*t%mod;
return ans;
}
int n,m,k;
struct road {
int to,nxt;
}s[N<<1];
int h[N],cnt;
void add(int i,int j) {s[++cnt]=(road) {j,h[i]};h[i]=cnt;}
ll f[N][2][15];
ll g[2][15],H[2][15];
ll c[15][15];
void dfs(int v,int fr) {
f[v][0][0]=f[v][1][0]=1;
for(int i=h[v];i;i=s[i].nxt) {
int to=s[i].to;
if(to==fr) continue ;
dfs(to,v);
memset(g,0,sizeof(g));
for(int j=0;j<=k;j++) {
for(int q=0;q<=k-j;q++) {
(g[0][j+q]+=c[j+q][j]*f[v][0][j]%mod*(f[to][0][q]+f[to][1][q]))%=mod;
(g[1][j+q]+=c[j+q][j]*f[v][1][j]%mod*f[to][0][q])%=mod;
}
}
memset(H,0,sizeof(H));
for(int j=0;j<=k;j++) {
for(int q=0;q<=k-j;q++) {
(H[1][j+q]+=c[j+q][j]*f[v][1][j]%mod*f[to][1][q])%=mod;
}
}
memcpy(f[v],g,sizeof(g));
for(int j=k;j>=1;j--)
for(int q=0;q<j;q++) (H[1][j]+=c[j][q]*H[1][q])%=mod;
for(int j=0;j<=k;j++) (f[v][1][j]+=H[1][j])%=mod;
}
}
int main() {
n=Get(),m=Get(),k=Get();
for(int i=0;i<=k;i++)
for(int j=0;j<=i;j++)
c[i][j]=(!j||i==j)?1:(c[i-1][j-1]+c[i-1][j])%mod;
int a,b;
for(int i=1;i<=m;i++) {
a=Get(),b=Get();
add(a,b),add(b,a);
}
dfs(1,0);
cout<<(f[1][0][k]+f[1][1][k])%mod;
return 0;
}
【gdoi2018 day2】第二题 滑稽子图的更多相关文章
-
【gdoi2018 day2】第二题 滑稽子图(subgraph)(性质DP+多项式)
题目大意 [gdoi2018 day2]第二题 滑稽子图(subgraph) 给你一颗树\(T\),以及一个常数\(K\),对于\(T\)的点集\(V\)的子集\(S\). 定义\(f(S)\)为点集 ...
-
05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
-
常见面试第二题之什么是Context
今天的面试题,也就是我们常见面试题系列的第二题,我们来讲一讲android中的context.我相信大家android开发者一定对于这个context非常熟悉,肯定都有使用过,肯定没有没使用过的.但是 ...
-
《学习OpenCV》练习题第五章第二题abc
代码: #include <stdio.h> #include <opencv/highgui.h> #include <opencv/cv.h> #include ...
-
《学习OpenCV》练习题第四章第二题
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
-
CSDN挑战编程——《金色十月线上编程比赛第二题:解密》
金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同一时候他也是一个黑客. 考试结束后不久.他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点. 在入侵的过程中.他发 ...
-
NOIP2005-普及组复赛-第二题-校门外的树
题目描述 Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
-
【LOJ#6066】「2017 山东一轮集训 Day3」第二题(哈希,二分)
[LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么 ...
-
test20181020 B君的第二题
题意 分析 考场70分 一看就是裸的kmp,直接打上去. #include<cstdlib> #include<cstdio> #include<cmath> #i ...
随机推荐
-
【项目】用CIFilter得到图片没办法保存到沙盒里面,显示是CGImage为空
错误代码: if (iOS9) { CGImageRef cgImage = [[CIContext new] createCGImage:outputImage fromRect:outputIma ...
-
Sublime Text 3 笔记
Nearly all of the interesting files for users live under the data directory. The data directory is ~ ...
-
UVa 11520 Fill the Square 填充正方形
在一个 n * n 网格中填了一些大写字母,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻格子(即有公共边的格子)中的字母不同.如果有多重填法,则要求按照从上到下,从左到右的顺序把所有格子连 ...
-
VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)
------------VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)------------- WIN10已上线,随之而来的是VS2015:微软在 "WDK760 ...
-
轻量级数据sqlite的C++调用示例
原文地址:http://www.cnblogs.com/kfqcome/archive/2011/06/27/2136999.html #include "stdafx.h" #i ...
-
JS模块化开发----require.js
前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得前 ...
-
wordpress | WP Mail SMTP使用QQ邮箱发布失败的解决办法
在使用contact form 7插件时遇到邮件发送失败的问题,经过检查发现是因为服务器不支持mail()函数,判断是否支持mail()函数可以参考http://www.diyzhan.com/201 ...
-
kafka消费者启动报错
报错信息: WARN Fetching topic metadata with correlation id 14 for topics [Set(test)] from broker [Broker ...
-
date(&#39;Y-m-d H:i:s&#39;,time()) 与 date(&#39;Y-m-d h:i:s&#39;,time())区别是什么
date('Y-m-d H:i:s',time()) 按24小时制 date('Y-m-d h:i:s',time()) 按12小时制
-
aop日志记录
1.自定义 package cc.mrbird.common.annotation; import java.lang.annotation.ElementType; import java.lang ...