传送门

题目大意

给你一棵树,可以染m种颜色,现定义一种特殊的颜色K,一棵树上最多能有x个特殊颜色。如果一个节点为特殊颜色,那么他相邻的节点的值只能选比K小的颜色,问一共有多少种染色方案。

分析

不难想出这是一个树型dp,用dp[i][j][k]表示考虑第i个点所选的颜色的种类为j,共用了k个特殊颜色。j的状态分别是0代表[1,K-1],1代表[K+1,m],2代表K。然后我们考虑如何转移。首先我们不难想到对于每种状态它是由之前哪种状态转移来的(见代码),对于k的枚举我们可以依次考虑一个点的所有儿子,然后每一次用当前儿子的值更新这个点的dp值。我们假设之前所有儿子和这个点自己一共选了k1个特殊颜色,而这个儿子及其子树选了k2个特殊颜色,这样就可以转移了。详见代码。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define li long long
const li mod = 1e9+;
li n,m,x,sum,dp[][][],now[][];
vector<li>v[];
inline void dfs(li a,li fa){
dp[a][][]=m-x;
dp[a][][]=x-;
dp[a][][]=;
for(li i=;i<v[a].size();i++)
if(v[a][i]!=fa){
dfs(v[a][i],a);
memset(now,,sizeof(now));
for(li k=;k<=sum;k++)
for(li k2=;k2+k<=sum;k2++){
now[][k+k2]=(now[][k+k2]+(dp[a][][k]*
(dp[v[a][i]][][k2]+dp[v[a][i]][][k2]))%mod)%mod;
now[][k+k2]=(now[][k+k2]+(dp[a][][k]*(dp[v[a][i]][][k2]
+dp[v[a][i]][][k2]+dp[v[a][i]][][k2])%mod))%mod;
now[][k+k2]=(now[][k+k2]+
(dp[a][][k]*dp[v[a][i]][][k2]%mod))%mod;
}
for(li k=;k<=sum;k++){
dp[a][][k]=now[][k];
dp[a][][k]=now[][k];
dp[a][][k]=now[][k];
}
}
return;
}
int main(){
li i,j,k;
scanf("%lld%lld",&n,&m);
memset(dp,,sizeof(dp));
for(i=;i<n;i++){
li a,b;
scanf("%lld%lld",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
scanf("%lld%lld",&x,&sum);
dfs(,);
li ans=;
for(i=;i<;i++)
for(j=;j<=sum;j++)
ans=(ans+dp[][i][j])%mod;
printf("%lld\n",ans);
return ;
}

855C Helga Hufflepuff's Cup的更多相关文章

  1. Codeforces 855C - Helga Hufflepuff's Cup

    855C - Helga Hufflepuff's Cup 题意 要求构建一棵树,树上至多可以存在 \(x\) 个权值为 \(k\) 的重要点,且与重要点连边的点的权值必须小于 \(k\),问有多少种 ...

  2. Helga Hufflepuff's Cup CodeForces - 855C

    Helga Hufflepuff's Cup CodeForces - 855C 题意:给一棵n个节点的树,要给每一个节点一个附加值,附加值可以为1-m中的一个整数.要求只能有最多x个节点有附加值k. ...

  3. C. Helga Hufflepuff's Cup 树形dp 难

    C. Helga Hufflepuff's Cup 这个题目我感觉挺难的,想了好久也写了很久,还是没有写出来. dp[i][j][k] 代表以 i 为根的子树中共选择了 j 个特殊颜色,且当前节点 i ...

  4. Codeforces 855C. Helga Hufflepuff's Cup----树形DP

    z最近在学习树形DP...好难啊. 在cf上找到了一题c题当模版马克一下. 题目不贴了..>>http://codeforces.com/problemset/problem/855/C& ...

  5. 【DP】【CF855C】 Helga Hufflepuff's Cup

    Description 给你一个树,可以染 \(m\) 个颜色,定义一个特殊颜色 \(k\) , 要求保证整棵树上特殊颜色的个数不超过 \(x\) 个.同时,如果一个节点是特殊颜色,那么它的相邻节点的 ...

  6. codeforces:Helga Hufflepuff's Cup

    题目大意:有一个包含n个顶点的无向无环连通图G,图中每个顶点都允许有一个值type,type的范围是1~m.有一个特殊值k,若一个顶点被赋值为k,则所有与之相邻的顶点只能被赋小于k的值.最多有x个顶点 ...

  7. 【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup

    [链接]h在这里写链接 [题意]     k是最高级别的分数,最高界别的分数最多只能有x个.     1<=k<=m;     和k相邻的点的分数只能小于k;     n个点的树,问你每个 ...

  8. Manthan, Codefest 17

    A. Tom Riddle's Diary time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  9. java高cup占用解决方案

    项目中发现java cpu占用高达百分之四百,查看代码发现有一个线程在空转,拉高了cup while(true){ } 解决方案,循环中加入延迟:Thread.sleep(Time): 总结下排查CP ...

随机推荐

  1. (转)libcurl库使用方法,好长,好详细。

    一.ibcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP ...

  2. SQL使用指南(1)—— 数据定义语言(DDL)

    1.使用create 语句创建表 CREATE TABLE table_name (column_name datatype[null|not null], column_name datatype[ ...

  3. 做什么职业,也别做程序员,尤其是Java程序员

    千万别做程序员,尤其别做Java这种门槛低,入门快的程序员(别跟我说Java搞精通了也很牛之类的,原因不解释,做5年以上就知道了),程序员本来就是我见过最坑爹的职业了...Java程序员更是,现在满地 ...

  4. Reinforcement Learning Q-learning 算法学习-1

  5. @media screen页面自适应尺寸!!

    @media screen and (max-width:360px){body,input,select{font-size:38%}} @media screen and (min-width:3 ...

  6. 性能测试工具BenchmarkDotnet

    .NET Core中的性能测试工具BenchmarkDotnet https://www.cnblogs.com/lwqlun/p/9671611.html 背景介绍 之前一篇博客中,我们讲解.NET ...

  7. 自定义Django Command

    转: django的command命令是要放在一个app的management/commands目录下.python2环境中,请确保management和management/commands目录内都 ...

  8. 一步一步使用webpack+react+scss脚手架重构项目

    前几天做了一个项目:[node]记录项目的开始与完成——pipeline_kafka流式数据库管理项目:因为开发时间紧迫,浅略的使用了一下react,感觉这个ui库非常的符合我的口味,现在趁着有空闲时 ...

  9. Node.js + Express

    相关链接: 1.https://www.jianshu.com/p/db4df1938eca 2.前端发起GET请求:http://localhost:3000/api/login?name=admi ...

  10. 如何找回未保存过的 Excel 文件?

    如何找回未保存过的 Excel 文件? 同事做了一个文件,未保存直接关闭,正常是找不回来的. 但是 Excel 有一个强大的自动保存功能,对没有保存的文件也可以找回.