Wannafly挑战赛27 C蓝魔法师
链接Wannafly挑战赛27 C蓝魔法师
- 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于\(k\),\(n,k\leq 2*10^3\)
- 假设我们正在考虑\(i\)这个子树,那么不和\(i\)连边的内部节点所在联通块大小是不会再发生改变了,所以我们根本不关心内部联通情况,只关心\(i\)的联通情况,因为\(i\)有可能会和父亲连边形成更大的联通块。
- 考虑\(f_{i,j}\)表示考虑子树\(i\),过子树\(i\)的联通块大小为\(j\)的方案数。
- 这个是考试的时候设的状态,其实这个说的不太严谨,应该是\(f_{i,j}\)表示考虑子树\(i\),当前子树\(i\)对父亲的联通块贡献\(j\)的方案数。
- 转移就是老套路了$$f_{i,u+v}=\sum f_{i,u}*f_{son,v}$$
\]
\]
- 答案就是\(f_{1,0}\)
#include<bits/stdc++.h>
#define R register int
#define ll long long
using namespace std;
const int N=2501;
const int M=5001;
const int mod=998244353;
int n,m,u,v,cnt,tmp[N],f[N][N],g[N][N],hd[N],to[M],nt[M],sz[N];
void link(R f,R t){nt[++cnt]=hd[f],to[cnt]=t,hd[f]=cnt;}
int gi(){
ll x=0,k=1;char c=getchar();
while((c<'0'||c>'9')&&c!='-')c=getchar();
if(c=='-')k=-1,c=getchar();
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
return x*k;
}
void add(R &x,R y){x=(x+y>=mod?x+y-mod:x+y);}
void Dfs(R i,R fm){
sz[i]=1,f[i][1]=1;
for(R k=hd[i];k;k=nt[k])
if(to[k]!=fm){
Dfs(to[k],i);
for(R j=1;j<=sz[i]+sz[to[k]];++j)tmp[j]=0;//f[i][j];
for(R u=0;u<=sz[i];++u)
for(R v=0;v<=sz[to[k]];++v)
add(tmp[u+v],1ll*f[to[k]][v]*f[i][u]%mod);
sz[i]+=sz[to[k]];
for(R j=1;j<=sz[i];++j)f[i][j]=tmp[j];
}
f[i][0]=0;
for(R j=1;j<=m;++j)add(f[i][0],f[i][j]);
for(R j=m+1;j<=sz[i];++j)f[i][j]=0;
}
int main(){
n=gi(),m=gi();
for(R i=1;i<n;++i)
u=gi(),v=gi(),link(u,v),link(v,u);
Dfs(1,0),cout<<f[1][0]<<endl;
return 0;
}
Wannafly挑战赛27 C蓝魔法师的更多相关文章
- Wannafly挑战赛27 D绿魔法师
链接Wannafly挑战赛27 D绿魔法师 一个空的可重集合\(S\),\(n\)次操作,每次操作给出\(x,k,p\),要求支持下列操作: 1.在\(S\)中加入\(x\). 2.求\[\sum_{ ...
- 牛客 Wannafly挑战赛27 D 绿魔法师
传送门 \(\color{green}{solution}\) 分析下,在\(1e5+1\)内,一个数的约数个数最多为\(2^{6}\)个,所以我们可以考虑枚举约数 复杂度\(O(N^{2^{6 \t ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- 牛客网 Wannafly挑战赛27 蓝魔法师
蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- Wannafly挑战赛21A
题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
- Wannafly挑战赛25C 期望操作数
Wannafly挑战赛25C 期望操作数 简单题啦 \(f[i]=\frac{\sum_{j<=i}f[j]}{i}+1\) \(f[i]=\frac{f[i]}{i}+\frac{\sum_{ ...
随机推荐
- Handling Configuration Changes with Fragments
This post addresses a common question that is frequently asked on StackOverflow: What is the best wa ...
- 【Geek议题】合理的VueSPA架构讨论(下)
接上篇<[Geek议题]合理的VueSPA架构讨论(上)>传送门. 自动化维护登录状态 登录状态标识符跟token类似,都是需要自动维护有效期,但也有些许不同,获取过程只在用户登录或注册的 ...
- iOS Beta 升级或降级
https://sspai.com/post/45442 public beta网站上安装profile, 去手机看更新 developer beta, 登录开发者网站, downloads, 下载p ...
- 011-Spring Boot 运行流程分析SpringApplication.run
一.程序入口 1.1.静态方法 //直接调用run方法 ConfigurableApplicationContext context = SpringApplication.run(App.class ...
- IncSecond:将一个TDateTime变量加减一定数量的秒数
http://tieba.baidu.com/p/1998083296 IncSecond:将一个TDateTime变量加减一定数量的秒数 声明:function IncSecond ( const ...
- shader例子
1.水波涟漪:https://zhuanlan.zhihu.com/p/47204844 2.shaderToy转unity: https://zhuanlan.zhihu.com/p/5228708 ...
- MethodBase.GetCurrentMethod 方法
如果当前正在执行的方法定义泛型类型上MethodInfo返回GetCurrentMethod通过泛型类型定义 (即,MethodInfo.ContainsGenericParameters返回true ...
- JS 数组的常用方法归纳之不改变原数组和其他
不改变原数组的方法 concat() 连接两个或多个数组,不改变现有数组,返回新数组,添加的是数组中的元素 join(",") 把数组中的所有元素放入一个字符串,通过‘,’分隔符进 ...
- 前端表格选中列合计,select-chosen,set集合,display隐藏
业务涉及到table选中列合计,同时隐藏未选中列.为了减少后端请求数据,前端获得所有数据后筛选计算. 1.select下拉框初始化 $(function() { $('.chosen-select') ...
- idea 社区版本创建javaweb项目 使用tomcat
1.创建maven webapp项目 2.pom文件添加依赖及tomcat7-maven-plugin插件 <dependencies> <dependency> <g ...