链接: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)相关推荐

  1. Wannafly挑战赛27 C 蓝魔法师(树上dp)

    链接:https://ac.nowcoder.com/acm/contest/215/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  2. Wannafly挑战赛27 C蓝魔法师

    链接Wannafly挑战赛27 C蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于\(k\),\(n,k\leq 2*10^3\) 假设我们正在考虑\(i\)这个子树,那么 ...

  3. 蓝魔法师——树形DP

    链接:https://ac.nowcoder.com/acm/problem/20811 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  4. Wannafly挑战赛27: D. 绿魔法师(莫比乌斯函数)

    链接:https://www.nowcoder.com/acm/contest/215/D 来源:牛客网 题目描述 "我不知道你在说什么,因为我只是个pupil."--绿魔法师 一 ...

  5. Wannafly 挑战赛27 题解

    Wannafly 挑战赛27 题目连接 https://www.nowcoder.com/acm/contest/215#question A.灰魔法师 题目 题解 考虑到可能的完全平方数只有4004 ...

  6. 牛客网 Wannafly挑战赛27 蓝魔法师

    蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...

  7. 牛客网比赛-Wannafly挑战赛27

    无关前置 最近同学都在打牛客网的比赛并且博主也在写一下牛客网的题,博主就去看了看,打了一场,题目质量还是非常不错的.我才不会告诉你我没开long long错了好久QWQ 212A-灰魔法师 题意简述 ...

  8. Wannafly挑战赛21: C. 大水题(DP)

    题目描述 现在给你N个正整数ai,每个数给出一"好数程度" gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位置的数满足 j < i ...

  9. Wannafly挑战赛27: E. 黄魔法师(构造)

    链接:https://www.nowcoder.com/acm/contest/215/E 来源:牛客网 题目描述 "恕瑞玛,你的皇帝回来啦!"--黄魔法师 给出 n, k,求一个 ...

最新文章

  1. Codewars Vasya - Clerk--6 kyu--Python解法
  2. 从ramdisk根文件系统启动Linux
  3. 【深度学习之美】卷地风来忽吹散,积得飘零美如画(入门系列之十)
  4. java web 使用https_如何在Web应用程序中实现HTTPS登录页面?
  5. wpf 如何设置弹出窗口必须关闭才能打开其他软件_CAD如何打印才能不留白?原来打印图纸还有这么多技巧?...
  6. SLF4j、log4j管理系统日志(Maven)
  7. 小阳买水果(前缀和,单调栈,思维)
  8. linux内核镜像解压,解压内核镜像
  9. jconsole是否可以在生产环境使用_jconsole使用
  10. bzoj 1951 [Sdoi2010]古代猪文 ——数学综合
  11. 橘子皮巧治咳嗽痰多 泡茶喝-转
  12. .net中对时间的操作
  13. Android背景图片设置
  14. 通信算法工程师调研整理
  15. 江苏省2008年普通高校自主招生入选考生名单公示 - 北大清华版
  16. 使用webp进行图像压缩
  17. GOPS2018 | 华为云运维最佳CP引领AIOps新风向
  18. 云服务器地域和可用区介绍
  19. 使用fiddler抓取HTTPS协议数据与疑难杂症终极解决方案
  20. 《HelloGitHub》第 39 期

热门文章

  1. python3入门代码-Python3入门(三)——Python基础语法
  2. 有什么python在线编辑器-Python常用的编辑器有哪些?老男孩Python
  3. 自从微信更新后,广东人都玩疯了!以后语音可以识别英语、粤语啦!
  4. (转)【自动语音识别课程】
  5. 语音识别控制设计之声控小汽车的实现
  6. 云知声原创技术再获肯定:多篇论文被国际语音顶会 INTERSPEECH 2020 收录
  7. 百度DOC php,PHP对接百度文档服务DOC
  8. java 获取js元素,表单元素值获取方式js及java方式的简单实例
  9. 【java笔记】线程间通信(2):生产者和消费者案例分析
  10. 【动态规划】P1004 方格取数(四维dp模板题)