依赖背包——cf855C好题
比较裸的依赖背包,但是想状态还是想了好久
转移时由于边界问题,虽然可以倒序转移,但当容量为0|1的时候,由于有初始值的存在
很难再原dp数组上进行修改,所以额外用tmp数组来保存修改后的值
#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define mod 1000000007
#define ll long long
#define maxn 100005
vector<int>G[maxn];
ll dp[maxn][][],n,m,k,x; void dfs(int u,int pre){
dp[u][][]=k-;dp[u][][]=;dp[u][][]=m-k;//先确定初始态:结点u本身的取值
for(int i=;i<G[u].size();i++)
if(G[u][i]!=pre)dfs(G[u][i],u); for(int i=;i<G[u].size();i++){
ll tmp[][]={};//临时数组用来存储节点u的答案
int v=G[u][i];
if(v==pre)continue;
for(int j=x;j>=;j--)
for(int l=;l<=j;l++){
tmp[j][]=(tmp[j][]+(dp[v][l][]+dp[v][l][]+dp[v][l][])*dp[u][j-l][])%mod;
tmp[j][]=(tmp[j][]+dp[v][l][]*dp[u][j-l][])%mod;
tmp[j][]=(tmp[j][]+(dp[v][l][]+dp[v][l][])*dp[u][j-l][])%mod;
}
for(int j=;j<=x;j++)
for(int l=;l<;l++)
dp[u][j][l]=tmp[j][l];
}
} int main(){
cin>>n>>m;
int u,v;
for(int i=;i<n;i++){
cin>>u>>v;
G[u].push_back(v);
G[v].push_back(u);
}
cin>>k>>x;
dfs(,);
ll ans=;
for(int i=;i<=x;i++)
ans=(ans+dp[][i][]+dp[][i][])%mod;
for(int i=;i<=x;i++)
ans=(ans+dp[][i][])%mod;
cout<<ans<<endl;
}
依赖背包——cf855C好题的更多相关文章
- hdu4044 依赖背包变形 好题!
		
由于不是求最大的可拦截的HP值,而是要将最小值最大化,那么就需要分配每个子树用的钱数以达到最小值最大化 第一步解决如何分配钱使得结点u的子树中用了j元钱后可以拦截的HP最大,这就是变形的分组(依赖)背 ...
 - hdu 1561 The more, The Better (依赖背包 树形dp)
		
题目: 链接:点击打开链接 题意: 非常明显的依赖背包. 思路: dp[i][j]表示以i为根结点时攻击j个城堡得到的最大值.(以i为根的子树选择j个点所能达到的最优值) dp[root][j] = ...
 - cf581F 依赖背包+临时数组 好题
		
这题得加个临时数组才能做.. /* 给定一棵树,树节点可以染黑白,要求叶子节点黑白平分 称连接黑白点的边为杂边,求使得杂边最少的染色方 那么设dp[i][j][0|1]表示i子树中有j个叶子节点,i染 ...
 - 【HDU 4276】The Ghost Blows Light(树形DP,依赖背包)
		
The Ghost Blows Light Problem Description My name is Hu Bayi, robing an ancient tomb in Tibet. The t ...
 - hdoj1010Starship Troopers (树dp,依赖背包)
		
称号:hdoj1010Starship Troopers 题意:有一个军队n个人要占据m个城市,每一个城市有cap的驻扎兵力和val的珠宝,并且这m个城市的占率先后具有依赖关系,军队的每一个人能够打败 ...
 - BZOJ.4182.Shopping(点分治/dsu on tree 树形依赖背包 多重背包 单调队列)
		
BZOJ 题目的限制即:给定一棵树,只能任选一个连通块然后做背包,且每个点上的物品至少取一个.求花费为\(m\)时最大价值. 令\(f[i][j]\)表示在点\(i\),已用体积为\(j\)的最大价值 ...
 - bzoj4753: [Jsoi2016]最佳团体(分数规划+树形依赖背包)
		
菜菜推荐的“水题”虐了我一天T T...(菜菜好强强qwq~ 显然是个分数规划题,二分答案算出p[i]-mid*s[i]之后在树上跑依赖背包,选k个最大值如果>0说明还有更优解. 第一次接触树形 ...
 - RNQOJ [stupid]愚蠢的矿工(树形依赖背包)
		
题意 题目链接 Sol 树形依赖背包板子题 树形依赖背包大概就是说:对于一个点,只有选了它的父亲才能选自身 把dfs序建出来,倒过来考虑 设\(f[i][j]\)表示从第\(i\)个节点往后背包体积为 ...
 - 依赖背包变形——poj1947(经典)
		
/*这题显然不适用依赖背包的优化,因为不能保证根是必选的,但是可以按照常规依赖背包的思路进行转移,即每次对一个儿子进行C^2的转移 还是树形的背包,dp[u][j]表示u的子树里,切割出一个大小为j的 ...
 
随机推荐
- Leetcode 4.28 Tree Easy
			
1. 101. Symmetric Tree 用递归. class Solution { public boolean isSymmetric(TreeNode root) { if( root == ...
 - 【NLP】选择目标序列:贪心搜索和Beam search
			
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
 - Bootstrap 模态框(Modal)插件id冲突
			
<!DOCTYPE html><html><head> <meta charset="utf-8"> <titl ...
 - [2019.03.16]使用DOM操作函数和CSS选择器来针对已有的HTML进行只凭JS的改动
			
刚入职的时候看到公司用的HTML日志生成工具附带的Panel,工具不够用,找个Fail还要找半天,于是自己琢磨着添砖加瓦.以前也是个半吊子前端工程师,现在可倒好,想要改页面却连页面生成的模板在哪里都不 ...
 - 聊聊 Scala 的伴生对象及其意义
			
2019-04-22 关键字:Scala 伴生对象的作用 关于 Scala 伴生对象,比教材更详细的解释. 什么是伴生对象? 教材中关于伴生对象的解释是:实现类似 Java 中那种既有实例成员又有静态 ...
 - ubuntu apt update failed to fetch
			
When I do command sudo apt update, always get belowing errors: Err:1 http://archive.ubuntu.com/ubunt ...
 - python第九天
			
复习内容: 文件处理 1. 操作文件的三步骤: ---打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持有 ---操作文件:读写操作 ---释放文件:释放操作系统对硬盘空间的持有 2. ...
 - Redis实现排行榜功能(实战)
			
需求前段时间,做了一个世界杯竞猜积分排行榜.对世界杯64场球赛胜负平进行猜测,猜对+1分,错误+0分,一人一场只能猜一次.1.展示前一百名列表.2.展示个人排名(如:张三,您当前的排名106579). ...
 - DirectX11 With Windows SDK--23 立方体映射:动态天空盒的实现
			
前言 上一章的静态天空盒已经可以满足绝大部分日常使用了.但对于自带反射/折射属性的物体来说,它需要依赖天空盒进行绘制,但静态天空盒并不会记录周边的物体,更不用说正在其周围运动的物体了.因此我们需要在运 ...
 - 轻量Pythonweb - flask+jinja2
			
后台代码 MVC from flask import Flask,request,render_template app = Flask(__name__) @app.route('/',method ...