codeforces855 C. Helga Hufflepuff‘s Cup(树形dp)
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)
#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)相关推荐
- 855C Helga Hufflepuff's Cup
传送门 题目大意 给你一棵树,可以染m种颜色,现定义一种特殊的颜色K,一棵树上最多能有x个特殊颜色.如果一个节点为特殊颜色,那么他相邻的节点的值只能选比K小的颜色,问一共有多少种染色方案. 分析 不难 ...
- VK Cup 2012 Round 1 D. Distance in Tree (树形dp)
题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5 ...
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
- [树形dp] Jzoj P5233 概率博弈
Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...
- fwt优化+树形DP HDU 5909
1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...
- BZOJ 1040 ZJOI2008 骑士 树形DP
题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...
- POJ 3342 树形DP+Hash
这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了. 今天我又重新捡了起来.(哈哈1A了) 题意: 没有上司的舞会+判重 思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算 ...
- [NC15748]旅游 树形dp基础
菜鸡第一次接触树形dp这个东西,不过这个东西还是很好理解的(可能是因为模板题吧) 个人感觉,相比线性dp,树形dp的状态转移方程更加的直观,难点主要是在"树"的结构上比较麻烦. 题 ...
- 容斥 + 树形dp ---- 2021 icpc 沈阳 L Perfect Matchings
题目链接 题目大意: 就是给你一个2n2n2n个点的完全图,从这个图里面抽出2n−12n-12n−1条边,这些边形成一颗树,现在问你剩下的图里面点进行完美匹配有多少种方案? 解题思路: 一开始被完美匹 ...
最新文章
- Win10: tensorflow 学习笔记(3)
- 十行代码实现网页标题滚动效果!
- 技术员联盟win11旗舰版64位镜像v2021.07
- 用js实现鼠标点击爱心特效
- 9种对抗电脑辐射的方法
- 财务有必要学python吗-会计要学python
- 上传新文件项目到svn上
- 微服务面试题 - Spring Cloud
- android 安装p12证书,怎么使用P12证书的Android
- 大数据抗疫的“洪荒之力”:多地政府借力大数据技术,多家企业上马大数据产品...
- SQL进阶篇之多表联查
- Nginx中传输带宽限制
- Lazada开店步骤Lazada开店需要条件
- elementUI 表格宽度自适应、不换行
- 记账软件,预设收支类别、收支账户进行记账的方法
- 三角形的几何公式大全_2020高中数学必备公式大全
- WFP 学习(一)——构架把握
- px rpx pt em rem单位
- 用友-应收应付重分类公式设置
- mysql中怎么查询出昨天,明天,五天,一周内,三个月内,半年内的数
热门文章
- armv7的linux系统,CentOS 7(1611) for ARM(armhfp)发布
- excel表格中添加combobox_Excel中两个表格对比,找出不同数据
- 7-6 区间覆盖 (10 分)(思路+详解)Come 宝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Java当中TreeMap用法
- php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...
- ai进入轮廓模式怎么退出_详解AI中扩展、扩展外观、轮廓化描边、创建轮廓
- [Java基础]字符串中的编码解码问题
- java 开源控件_一些好用的开源控件
- vue动态切换css文件_vue实现样式之间的切换及vue动态样式的实现方法
- CoreJava 笔记总结-第十二章 并发-2