Wannafly挑战赛27: C. 蓝魔法师(树形DP)
链接:https://www.nowcoder.com/acm/contest/215/C
来源:牛客网
题目描述
“你,你认错人了。我真的,真的不是食人魔。”--蓝魔法师
给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一条边在一个方案中被删除,而在另一个方案中未被删除,答案对998244353取模
输入描述:
第一行两个整数n,k, 表示点数和限制 2 <= n <= 2000, 1 <= k <= 2000 接下来n-1行,每行包括两个整数u,v,表示u,v两点之间有一条无向边 保证初始图联通且合法
输出描述:
共一行,一个整数表示方案数对998244353取模的结果
输入
5 2 1 2 1 3 2 4 2 5
输出
7
dp[x][sum]表示只考虑根为x的子树,当前包含节点x的联通块大小为sum,的方案个数
其中dp[x][0]特殊,用来表示∑dp[x][i] (1≤i≤k)
这样的话只需要在树形DP时来一个类似于背包的操作就行了
看似复杂度是O(nk²)的,但实际上应该只有O(nk)
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
#define LL long long
#define mod 998244353
vector<int> G[2005];
int k, siz[2005];
LL dp[2005][2005], temp[2005];
void Sech(int u, int p)
{int i, j, v, q;dp[u][1] = siz[u] = 1;for(q=0;q<G[u].size();q++){v = G[u][q];if(v==p)continue;Sech(v, u);memset(temp, 0, sizeof(temp));for(i=1;i<=siz[u];i++){for(j=0;j<=min(siz[v], k-i);j++)temp[i+j] = (temp[i+j]+dp[u][i]*dp[v][j])%mod;}memcpy(dp[u], temp, sizeof(temp));siz[u] += siz[v];}for(i=1;i<=k;i++)dp[u][0] = (dp[u][0]+dp[u][i])%mod;
}
int main(void)
{LL ans;int n, x, i, y;scanf("%d%d", &n, &k);for(i=1;i<=n-1;i++){scanf("%d%d", &x, &y);G[x].push_back(y);G[y].push_back(x);}ans = 0;Sech(1, 0);for(i=1;i<=k;i++)ans = (ans+dp[1][i])%mod;printf("%lld\n", ans);return 0;
}
/*
3 1000
1 2
1 3
*/
Wannafly挑战赛27: C. 蓝魔法师(树形DP)相关推荐
- Wannafly挑战赛27 C 蓝魔法师(树上dp)
链接:https://ac.nowcoder.com/acm/contest/215/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- Wannafly挑战赛27 C蓝魔法师
链接Wannafly挑战赛27 C蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于\(k\),\(n,k\leq 2*10^3\) 假设我们正在考虑\(i\)这个子树,那么 ...
- 蓝魔法师——树形DP
链接:https://ac.nowcoder.com/acm/problem/20811 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- Wannafly挑战赛27: D. 绿魔法师(莫比乌斯函数)
链接:https://www.nowcoder.com/acm/contest/215/D 来源:牛客网 题目描述 "我不知道你在说什么,因为我只是个pupil."--绿魔法师 一 ...
- Wannafly 挑战赛27 题解
Wannafly 挑战赛27 题目连接 https://www.nowcoder.com/acm/contest/215#question A.灰魔法师 题目 题解 考虑到可能的完全平方数只有4004 ...
- 牛客网 Wannafly挑战赛27 蓝魔法师
蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...
- 牛客网比赛-Wannafly挑战赛27
无关前置 最近同学都在打牛客网的比赛并且博主也在写一下牛客网的题,博主就去看了看,打了一场,题目质量还是非常不错的.我才不会告诉你我没开long long错了好久QWQ 212A-灰魔法师 题意简述 ...
- Wannafly挑战赛21: C. 大水题(DP)
题目描述 现在给你N个正整数ai,每个数给出一"好数程度" gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位置的数满足 j < i ...
- Wannafly挑战赛27: E. 黄魔法师(构造)
链接:https://www.nowcoder.com/acm/contest/215/E 来源:牛客网 题目描述 "恕瑞玛,你的皇帝回来啦!"--黄魔法师 给出 n, k,求一个 ...
最新文章
- Codewars Vasya - Clerk--6 kyu--Python解法
- 从ramdisk根文件系统启动Linux
- 【深度学习之美】卷地风来忽吹散,积得飘零美如画(入门系列之十)
- java web 使用https_如何在Web应用程序中实现HTTPS登录页面?
- wpf 如何设置弹出窗口必须关闭才能打开其他软件_CAD如何打印才能不留白?原来打印图纸还有这么多技巧?...
- SLF4j、log4j管理系统日志(Maven)
- 小阳买水果(前缀和,单调栈,思维)
- linux内核镜像解压,解压内核镜像
- jconsole是否可以在生产环境使用_jconsole使用
- bzoj 1951 [Sdoi2010]古代猪文 ——数学综合
- 橘子皮巧治咳嗽痰多 泡茶喝-转
- .net中对时间的操作
- Android背景图片设置
- 通信算法工程师调研整理
- 江苏省2008年普通高校自主招生入选考生名单公示 - 北大清华版
- 使用webp进行图像压缩
- GOPS2018 | 华为云运维最佳CP引领AIOps新风向
- 云服务器地域和可用区介绍
- 使用fiddler抓取HTTPS协议数据与疑难杂症终极解决方案
- 《HelloGitHub》第 39 期
热门文章
- python3入门代码-Python3入门(三)——Python基础语法
- 有什么python在线编辑器-Python常用的编辑器有哪些?老男孩Python
- 自从微信更新后,广东人都玩疯了!以后语音可以识别英语、粤语啦!
- (转)【自动语音识别课程】
- 语音识别控制设计之声控小汽车的实现
- 云知声原创技术再获肯定:多篇论文被国际语音顶会 INTERSPEECH 2020 收录
- 百度DOC php,PHP对接百度文档服务DOC
- java 获取js元素,表单元素值获取方式js及java方式的简单实例
- 【java笔记】线程间通信(2):生产者和消费者案例分析
- 【动态规划】P1004 方格取数(四维dp模板题)