C. Helga Hufflepuff’s Cup

比较经典的树形dp套路。由于题目限制某类点的数量,因而状态需要记录一下子树中该特殊点的数量。

设计dp:
fu,j,kf_{u,j,k}fu,j,k​以uuu为根的子树中,选了jjj个特殊值(点权==K),uuu的权值是0/1/2(分别表示小于K/等于K/大于K)

转移用一个数组辅助转移即可

时间复杂度O(NK)O(NK)O(NK)

LLC的博客

#include<bits/stdc++.h>using namespace std;
using ll=long long;constexpr int N=100005,mod=1e9+7;
int h[N],e[2*N],ne[2*N],idx;
void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;}
int n,m,K,X;
ll f[N][11][3];// f[u][j][k] 以u为根 选了j个特殊的点 u状态是0/1/2 小于K/等于K/大于K
ll g[11][3];
int sz[N];
void dfs(int u,int fa)
{f[u][0][0]=K-1;f[u][1][1]=1;f[u][0][2]=m-K;sz[u]=1;for(int i=h[u];i!=-1;i=ne[i]){int v=e[i];if(v==fa) continue;dfs(v,u);memset(g,0,sizeof g);for(int j=0;j<=min(X,sz[u]);j++)for(int k=0;k<=sz[v]&&j+k<=X;k++){g[j+k][0]=(g[j+k][0]+f[u][j][0]*(f[v][k][0]+f[v][k][1]+f[v][k][2]))%mod;g[j+k][1]=(g[j+k][1]+f[u][j][1]*f[v][k][0])%mod;g[j+k][2]=(g[j+k][2]+f[u][j][2]*(f[v][k][0]+f[v][k][2]))%mod;}sz[u]+=sz[v];for(int j=0;j<=min(X,sz[u]);j++)for(int k=0;k<3;k++)    f[u][j][k]=g[j][k];}
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>m;memset(h,-1,sizeof h);for(int i=1;i<n;i++){int u,v;cin>>u>>v;add(u,v),add(v,u);}cin>>K>>X;dfs(1,0);ll ans=0;for(int i=0;i<=X;i++)for(int j=0;j<3;j++)ans=(ans+f[1][i][j])%mod;cout<<ans<<'\n';return 0;
}

codeforces855 C. Helga Hufflepuff‘s Cup(树形dp)相关推荐

  1. 855C Helga Hufflepuff's Cup

    传送门 题目大意 给你一棵树,可以染m种颜色,现定义一种特殊的颜色K,一棵树上最多能有x个特殊颜色.如果一个节点为特殊颜色,那么他相邻的节点的值只能选比K小的颜色,问一共有多少种染色方案. 分析 不难 ...

  2. VK Cup 2012 Round 1 D. Distance in Tree (树形dp)

    题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5 ...

  3. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  4. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  5. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  6. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

  7. POJ 3342 树形DP+Hash

    这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了. 今天我又重新捡了起来.(哈哈1A了) 题意: 没有上司的舞会+判重 思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算 ...

  8. [NC15748]旅游 树形dp基础

    菜鸡第一次接触树形dp这个东西,不过这个东西还是很好理解的(可能是因为模板题吧) 个人感觉,相比线性dp,树形dp的状态转移方程更加的直观,难点主要是在"树"的结构上比较麻烦. 题 ...

  9. 容斥 + 树形dp ---- 2021 icpc 沈阳 L Perfect Matchings

    题目链接 题目大意: 就是给你一个2n2n2n个点的完全图,从这个图里面抽出2n−12n-12n−1条边,这些边形成一颗树,现在问你剩下的图里面点进行完美匹配有多少种方案? 解题思路: 一开始被完美匹 ...

最新文章

  1. Win10: tensorflow 学习笔记(3)
  2. 十行代码实现网页标题滚动效果!
  3. 技术员联盟win11旗舰版64位镜像v2021.07
  4. 用js实现鼠标点击爱心特效
  5. 9种对抗电脑辐射的方法
  6. 财务有必要学python吗-会计要学python
  7. 上传新文件项目到svn上
  8. 微服务面试题 - Spring Cloud
  9. android 安装p12证书,怎么使用P12证书的Android
  10. 大数据抗疫的“洪荒之力”:多地政府借力大数据技术,多家企业上马大数据产品...
  11. SQL进阶篇之多表联查
  12. Nginx中传输带宽限制
  13. Lazada开店步骤Lazada开店需要条件
  14. elementUI 表格宽度自适应、不换行
  15. 记账软件,预设收支类别、收支账户进行记账的方法
  16. 三角形的几何公式大全_2020高中数学必备公式大全
  17. WFP 学习(一)——构架把握
  18. px rpx pt em rem单位
  19. 用友-应收应付重分类公式设置
  20. mysql中怎么查询出昨天,明天,五天,一周内,三个月内,半年内的数

热门文章

  1. armv7的linux系统,CentOS 7(1611) for ARM(armhfp)发布
  2. excel表格中添加combobox_Excel中两个表格对比,找出不同数据
  3. 7-6 区间覆盖 (10 分)(思路+详解)Come 宝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4. Java当中TreeMap用法
  5. php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...
  6. ai进入轮廓模式怎么退出_详解AI中扩展、扩展外观、轮廓化描边、创建轮廓
  7. [Java基础]字符串中的编码解码问题
  8. java 开源控件_一些好用的开源控件
  9. vue动态切换css文件_vue实现样式之间的切换及vue动态样式的实现方法
  10. CoreJava 笔记总结-第十二章 并发-2