bzoj 4711 小奇挖矿 ——“承诺”类树形dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4711
对“承诺”有了更深的了解。
向外和向内要区分,所以 f [ i ][ j ] 表示根向外 j 步有仓库;g[ i ][ j ]表示根向内 j 步有仓库。
转移的时候要注意,要保证承诺的那个地方确实有仓库;通过 cr 之前的孩子 或 当前孩子 的那个地方的承诺来保证;剩下的部分不用保证那儿有仓库,用自己的最小值转移即可;
一棵子树如果承诺自己内部某个地方有仓库,就一定已经有了;但承诺外部的某个地方有仓库却只是承诺;所以可以对 g[ ][ ] 取min来做那个随便的转移,却不能随便对待 f [ ][ ]。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,INF=1e9;
int n,d[N],K,hd[N],xnt,to[N<<],nxt[N<<];
int f[N][N],g[N][N],mn[N];
void add(int x,int y)
{
to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
to[++xnt]=x;nxt[xnt]=hd[y];hd[y]=xnt;
}
void dfs(int cr,int fa)
{
for(int i=;i<n;i++)f[cr][i]=d[i],g[cr][i]=INF;
f[cr][n]=g[cr][n]=INF;
f[cr][]=g[cr][]=K; mn[cr]=K;//mn[cr]=K
for(int i=hd[cr],v;i;i=nxt[i])
if((v=to[i])!=fa)
{
dfs(v,cr);
for(int j=;j<n;j++)
{
if(j)
g[cr][j]=min(g[cr][j]+min(f[v][j+],mn[v]),
g[v][j-]+min(mn[cr],f[cr][j]));
else g[cr][j]+=min(f[v][j+],mn[v]); f[cr][j]=min(f[cr][j]+min(mn[v],f[v][j+]),f[v][j+]+mn[cr]);
//printf("f[%d][%d]=%d g[%d][%d]=%d\n",cr,j,f[cr][j],cr,j,g[cr][j]);
}
mn[cr]=g[cr][];
for(int j=;j<n;j++)min(mn[cr],g[cr][j]);
}
mn[cr]=g[cr][];
for(int i=;i<n;i++)mn[cr]=min(mn[cr],g[cr][i]);
}
int main()
{
scanf("%d%d",&n,&K);
for(int i=;i<n;i++)scanf("%d",&d[i]);
for(int i=,u,v;i<n;i++)
{
scanf("%d%d",&u,&v);add(u,v);
}
dfs(,);
printf("%d\n",min(mn[],f[][]));
return ;
}
bzoj 4711 小奇挖矿 ——“承诺”类树形dp的更多相关文章
- bzoj 4711 小奇挖矿 —— 树形DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4711 就是树形DP,然而也想了半天才把转移想清楚: f[x][j][0] 表示 x 去上面 ...
- 小奇的仓库(树形DP)
「题目背景」 小奇采的矿实在太多了,它准备在喵星系建个矿石仓库.令它无语的是,喵星系的货运飞船引擎还停留在上元时代! 「问题描述」 喵星系有n个星球,星球以及星球间的航线形成一棵树. 从星球a到星球b ...
- BZOJ 4316: 小C的独立集 仙人掌 + 树形DP
4316: 小C的独立集 Time Limit: 10 Sec Memory Limit: 128 MB Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. ...
- bzoj 4550: 小奇的博弈【博弈论+dp】
首先看出终止状态是全都堆在左边或者右边,然后发现黑的向左白的向右是最优策略(如果不能这样了也就该输了) 然后就不会了 参考 http://www.cnblogs.com/CQzhangyu/p/770 ...
- 【BZOJ4711】小奇挖矿 树形DP
[BZOJ4711]小奇挖矿 Description [题目背景] 小奇在喵星系使用了无限非概率驱动的采矿机,以至于在所有星球上都采出了一些矿石,现在它准备建一些矿石仓库并把矿石运到各个仓库里. [问 ...
- NOIP模拟赛(by hzwer) T1 小奇挖矿
[题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值 w)的飞船,按既定 路线依次飞过喵星系的 n 个星球. [问题描述] 星球分为 2 类:资源型和维修型. 1. 资源型:含矿物质量 ...
- 2.17NOIP模拟赛(by hzwer) T1 小奇挖矿
[题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值 w)的飞船,按既定 路线依次飞过喵星系的 n 个星球. [问题描述] 星球分为 2 类:资源型和维修型. 1. 资源型:含矿物质量 ...
- BZOJ4711 小奇挖矿
Description [题目背景] 小奇在喵星系使用了无限非概率驱动的采矿机,以至于在所有星球上都采出了一些矿石,现在它准备建一些矿石仓 库并把矿石运到各个仓库里. [问题描述] 喵星系有n个星球, ...
- bzoj 4547 小奇的集合
Description 有一个大小为n的可重集S,小奇每次操作可以加入一个数a+b(a,b均属于S),求k次操作后它可获得的S的和的最大 值.(数据保证这个值为非负数) Input 第一行有两个整数n ...
随机推荐
- HDU 1253:胜利大逃亡(简单三维BFS)
pid=1253">胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- c++对象模型和对象内存布局
简单对象模型:如下图所示: 每一个object是一系列的slots,每一个data member或者function member都有自己的一个slot.这种模型的空间和执行效率都很低.在这个模型中, ...
- mysql:“Access denied for user 'root@IP地址'"
请仔细.再仔细确认你的用户名.密码.IP是否有误! 可悲的我老犯这种低级错误,以为用户没权限访问,唉..
- 微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服
微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服 2014/10/08 · Testin · 开发人员訪谈 2013年11月1日,谷歌运行董事长施密特(Eric Emerson Sch ...
- CentOSyum操作
查看已经安装yum: yum list installed|grep mysql 查看yum: yum list|grep mysql 更新yum: rpm -ivh mysql-community- ...
- 目标检测之显著区域检测---国外的一个图像显著区域检测代码及其效果图 saliency region detection
先看几张效果图吧 效果图: 可以直接测试的代码: 头文件: // Saliency.h: interface for the Saliency class.////////////////////// ...
- LeetCode(82)题解: Remove Duplicates from Sorted List II
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ 题目: Given a sorted linked list, ...
- unsigned double
最近犯了一个错误: 定义变量类型的时候竟然定义了unsigned double的类型.由于编译能够通过,因此一直没有发现这样写会有什么样的问题. 今天一次偶然的测试中发现这些变量的值都是整数.一开始觉 ...
- Hybrid--WebView中使用Ajax
Hybrid框架下的app,使用的Ajax.须要注意的是UIWebViewDelegate不会监測到Ajax的request.也就是再运行Ajax代码时.shouldStartLoadWithReuq ...
- javaweb开发之EL表达式
一.EL简介 EL全名为Expression Language,它主要用于替换JSP页面中的脚本表达式<%= %>,从各种类型的Web域中检索Java对象.获取数据.它可以很方便地访问Ja ...