Codeforces 855C. Helga Hufflepuff's Cup----树形DP
z最近在学习树形DP...好难啊。
在cf上找到了一题c题当模版马克一下。
题目不贴了。。>>http://codeforces.com/problemset/problem/855/C<<
题目的意思就是给你一棵有n个节点的树,m个关系,每个节点需要上色,一共有K种颜色,其中有一个最大色,与他相邻的节点只能上比他“小”的颜色。并且最多有X个节点可以染最大色。求问染色方法有多少种。
代码如下:
#include<vector>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
const int mod=1e9+;
int n,m,K,X;
vector<int> e[];//用来存储树枝(双向)
long long dp[][][];//dp主体,分别表示节点、选择最大色的节点数,最后一个空的0,1,2分别表示“选比最大色小的颜色时”
//“选最大色时”、“选比最大色大的颜色时” int sz[100010]={0};//表示递归到该节点时已选最大色的数目
int t[12][3];
int sz[100010]={0};
int t[12][3];
long long dfs(int x,int pre)
{
dp[x][0][0]=K-1;
dp[x][1][1]=1;
dp[x][0][2]=m-K;
sz[x]=1;
int i,xx,j,k;
for(i=0;i<e[x].size();i++)
{
xx=e[x][i];
if(xx==pre) continue;
dfs(xx,x);
memset(t,0,sizeof(t));
for(j=0;j<=sz[x];j++)
for(k=0;k<=sz[xx];k++)
{
if(j+k>X) continue;
t[j+k][0]=(t[j+k][0]+(dp[x][j][0]*(dp[xx][k][0]+dp[xx][k][1]+dp[xx][k][2]))%mod)%mod;
t[j+k][1]=(t[j+k][1]+(dp[x][j][1]*dp[xx][k][0]%mod))%mod;
t[k+j][2]=(t[k+j][2]+(dp[x][j][2]*(dp[xx][k][0]+dp[xx][k][2])%mod))%mod;
}
sz[x]=min(sz[x]+sz[xx],X);
for(j=0;j<=sz[x];j++)
for(k=0;k<=2;k++)
{
dp[x][j][k]=t[j][k];
}
}
}
int main()
{
int i,j,k,q,w;
while(cin>>n>>m)
{
long long ans=0;
for(i=1;i<=n;i++) e[i].clear();
for(i=1;i<n;i++)
{
cin>>q>>w;
e[q].push_back(w);
e[w].push_back(q);
}
cin>>K>>X;
dfs(1,-1);
for(j=0;j<=sz[1];j++)
for(k=0;k<=2;k++)
ans=(ans+dp[1][j][k])%mod;
cout<<ans<<endl;
}
}
Codeforces 855C. Helga Hufflepuff's Cup----树形DP的更多相关文章
- Codeforces 855C - Helga Hufflepuff's Cup
855C - Helga Hufflepuff's Cup 题意 要求构建一棵树,树上至多可以存在 \(x\) 个权值为 \(k\) 的重要点,且与重要点连边的点的权值必须小于 \(k\),问有多少种 ...
- C. Helga Hufflepuff's Cup 树形dp 难
C. Helga Hufflepuff's Cup 这个题目我感觉挺难的,想了好久也写了很久,还是没有写出来. dp[i][j][k] 代表以 i 为根的子树中共选择了 j 个特殊颜色,且当前节点 i ...
- 855C Helga Hufflepuff's Cup
传送门 题目大意 给你一棵树,可以染m种颜色,现定义一种特殊的颜色K,一棵树上最多能有x个特殊颜色.如果一个节点为特殊颜色,那么他相邻的节点的值只能选比K小的颜色,问一共有多少种染色方案. 分析 不难 ...
- Helga Hufflepuff's Cup CodeForces - 855C
Helga Hufflepuff's Cup CodeForces - 855C 题意:给一棵n个节点的树,要给每一个节点一个附加值,附加值可以为1-m中的一个整数.要求只能有最多x个节点有附加值k. ...
- codeforces:Helga Hufflepuff's Cup
题目大意:有一个包含n个顶点的无向无环连通图G,图中每个顶点都允许有一个值type,type的范围是1~m.有一个特殊值k,若一个顶点被赋值为k,则所有与之相邻的顶点只能被赋小于k的值.最多有x个顶点 ...
- Codeforces 219D - Choosing Capital for Treeland(树形dp)
http://codeforces.com/problemset/problem/219/D 题意 给一颗树但边是单向边,求至少旋转多少条单向边的方向,可以使得树上有一点可以到达树上任意一点,若有多个 ...
- codeforces 633F The Chocolate Spree (树形dp)
题目链接:http://codeforces.com/problemset/problem/633/F 题解:看起来很像是树形dp其实就是单纯的树上递归,就是挺难想到的. 显然要求最优解肯定是取最大的 ...
- codeforces 486 D. Valid Sets(树形dp)
题目链接:http://codeforces.com/contest/486/problem/D 题意:给出n个点,还有n-1条边的信息,问这些点共能构成几棵满足要求的树,构成树的条件是. 1)首先这 ...
- Codeforces 418d Big Problems for Organizers [树形dp][倍增lca]
题意: 给你一棵有n个节点的树,树的边权都是1. 有m次询问,每次询问输出树上所有节点离其较近结点距离的最大值. 思路: 1.首先是按照常规树形dp的思路维护一个子树节点中距离该点的最大值son_di ...
随机推荐
- tcp/ip 3次握手和4次挥手
tcp/ip 3次握手和4次挥手
- Java基础整理
一.Java中的遍历 1.在java开发中会碰到遍历List删除其中多个元素的情况,如果使用一般的for循环以及增强的for循环,代码会抛出异常ConcurrentModificationExcept ...
- usdt转入转出出入金开发
usdt转入转出出入金开发 比特币协议 -> Omni 层协议 -> USDTUSDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/ ...
- Codeforce 814A - An abandoned sentiment from past (贪心)
A few years ago, Hitagi encountered a giant crab, who stole the whole of her body weight. Ever since ...
- The Little Prince-12/05
The Little Prince-12/05 "When a mystery is too overpowering, one dare not disobey. Absurd as it ...
- js 显示刚刚上传的图片 (onchange事件)
<table> <tr width="100"> <td>上传商场图片:</td> <td> <input typ ...
- MyEclipse 10.7(版本:eclipse 3.7.x-Indigo系列)安装activiti-eclipse-plugin插件(流程设计器)
基本信息 1.本机MyEclipse 10.7菜单[Help->About MyEclipse Enterprise Workbench]的版本信息: MyEclipse Enterprise ...
- 2018.1.7java转型
从昨天的组合和继承开始,我在分析二者的区别,到后面的向上转型,再到hashcode和equals还有==的区别,感觉基础还很不好,也许,目前应该从面向对象开始复习,把暂时笔试宝典放一下. 回忆一下今天 ...
- leetcode [34] Find First and Last Position of Element in Sorted Array
Given an array of integers nums sorted in ascending order, find the starting and ending position of ...
- Java中的Volatile和synchronized的区别
Synchronized和Volatile四个不同点: 1.粒度不同,前者锁对象和类 ,后者针对变量2.syn阻塞,volatile线程不阻塞3.syn保证三大特性,volatile不保证原子性4.s ...