855C Helga Hufflepuff's Cup

时间:2022-08-27 00:19:12

传送门

题目大意

给你一棵树,可以染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&&num;39&semi;s Cup

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

  2. Helga Hufflepuff&&num;39&semi;s Cup CodeForces - 855C

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

  3. C&period; Helga Hufflepuff&&num;39&semi;s Cup 树形dp 难

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

  4. Codeforces 855C&period; Helga Hufflepuff&&num;39&semi;s Cup----树形DP

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

  5. 【DP】【CF855C】 Helga Hufflepuff&&num;39&semi;s Cup

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

  6. codeforces&colon;Helga Hufflepuff&&num;39&semi;s Cup

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

  7. 【codeforces Manthan&comma; Codefest 17 C】Helga Hufflepuff's Cup

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

  8. Manthan&comma; 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. 如何理解反向传播 Backpropagation 梯度下降算法要点

    http://colah.github.io/posts/2015-08-Backprop/ http://www.zhihu.com/question/27239198 待翻译 http://blo ...

  2. hdu 1069 &lpar;DP&rpar; Monkey and Banana

    题目:这里 题意: Description 一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块 ...

  3. 使用AsyncTask实现文件下载并且在状态中显示下载进度

    2013年10月24日 上班的第二天 昨天我是用afinal完成的则个功能,但是公司里并不希望使用第三方的代码,所以要求我在不使用第三方开源项目的情况下实现. 最先我是使用Thread开启一个子线程, ...

  4. nginx实现动态分离&comma;解决css和js等图片加载问题

    改帖专门为使用nginx,通过nginx把请求转发到web服务器再返回客户端的时候,解决css和js和图片加载不出来的问题. 如果没安装nginx,请访问一下地址进行安装 http://www.cnb ...

  5. Windows Internals学习笔记(四)Trap Dispatching

    参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...

  6. 阿里druid 介绍及配置

    1. 简介,什么是Druid Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和SQL解析器组成.该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如 ...

  7. Spring MVC基础

    1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...

  8. css3波浪形loading动画

    css3做个第一个动画,主要点在box-shadow和background的变化,虽然不难,但是还是有一定的技巧性的!备注下 html <div class="loading&quot ...

  9. 支付宝AR实景红包上线不久即遭破解,官方已提高技术门槛

    临近春节,阿里巴巴和腾讯的红包大战可谓下足功夫,上周支付宝推出了AR实景红包,该玩法基于"LBS+AR+红包"的方式,类似与今年火爆全球的AR手游Pekomon Go ,只不过这次 ...

  10. 字符串&lpar;String&rpar;

    字符串 字符串就是用引号引起来的一段文字.字母.数字-- 例如: "这是字符串"."zheshizifuc"."6666" 使用字符串的方法 ...