bzoj 4711 小奇挖矿 —— 树形DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4711
就是树形DP,然而也想了半天才把转移想清楚;
f[x][j][0] 表示 x 去上面 j 步的仓库,f[x][j][1] 表示 x 去子树内下去 j 步的仓库而且整个子树都算好了;
f[x][j][0] 就是 d[j] 加上儿子们的 f[u][...][1] 与 f[u][j+1][0] 的最小值;
f[x][j][1] 就是选一个儿子加它的 f[u][j-1][1],其它儿子是 f[u][...][1] 与 f[u][j+1][0] 的最小值;
f[x][0][1] 要特殊处理一下;
然后一交秒WA,又改了改,似乎也没改什么,就A了...总之注意边界。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const xn=,inf=0x3f3f3f3f;
int n,K,d[xn],ans,f[xn][xn][],mn[xn];
int hd[xn],ct,nxt[xn<<],to[xn<<];
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
void add(int x,int y){to[++ct]=y; nxt[ct]=hd[x]; hd[x]=ct;}
void dfs(int x,int fa)
{
for(int i=hd[x],u;i;i=nxt[i])
{
if((u=to[i])==fa)continue;
dfs(u,x);
}
for(int j=;j<n;j++)
{
if(!j)f[x][j][]=K;
else f[x][j][]=d[j];
for(int i=hd[x],u;i;i=nxt[i])
{
if((u=to[i])==fa)continue;
// for(int k=0;k<n;k++)ret=min(ret,f[u][k][1]);
int ret=min(mn[u],f[u][j+][]);
f[x][j][]+=ret;
}
if(!j)
{
f[x][j][]=K;
for(int i=hd[x],u;i;i=nxt[i])
{
if((u=to[i])==fa)continue;
int ret=min(f[u][][],mn[u]);
// for(int k=0;k<n;k++)ret=min(ret,f[u][k][1]);
f[x][j][]+=ret;
}
}
else
{
f[x][j][]=inf;
for(int i=hd[x],v;i;i=nxt[i])
{
if((v=to[i])==fa)continue;
int r=f[v][j-][]+d[j];
for(int l=hd[x],u;l;l=nxt[l])
{
if((u=to[l])==fa||u==v)continue;
int ret=min(f[u][j+][],mn[u]);
// for(int k=0;k<n;k++)ret=min(ret,f[u][k][1]);
r+=ret;
}
f[x][j][]=min(f[x][j][],r);
}
}
mn[x]=min(mn[x],f[x][j][]);
}
}
int main()
{
n=rd(); K=rd();
for(int i=;i<n;i++)d[i]=rd();
for(int i=,x,y;i<n;i++)
{
x=rd(); y=rd();
add(x,y); add(y,x);
}
memset(f,0x3f,sizeof f);
memset(mn,0x3f,sizeof mn);
dfs(,); ans=f[][][];
for(int j=;j<n;j++)ans=min(ans,f[][j][]);
printf("%d\n",ans);
return ;
}
bzoj 4711 小奇挖矿 —— 树形DP的更多相关文章
- 【BZOJ4711】小奇挖矿 树形DP
[BZOJ4711]小奇挖矿 Description [题目背景] 小奇在喵星系使用了无限非概率驱动的采矿机,以至于在所有星球上都采出了一些矿石,现在它准备建一些矿石仓库并把矿石运到各个仓库里. [问 ...
- bzoj 4711 小奇挖矿 ——“承诺”类树形dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4711 对“承诺”有了更深的了解. 向外和向内要区分,所以 f [ i ][ j ] 表示根向 ...
- [BZOJ 4033] [HAOI2015] T1 【树形DP】
题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...
- [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)
[BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...
- [CSP-S模拟测试]:小奇挖矿2(DP+赛瓦维斯特定理)
题目背景 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. 题目描述 现在有$m+1$个星球,从左到右标号为$0$到$n$,小奇最初 ...
- BZOJ 2878: [Noi2012]迷失游乐园( 树形dp )
一棵树的话直接树形dp(求出往下走和往上走的期望长度). 假如是环套树, 环上的每棵树自己做一遍树形dp, 然后暴力枚举(环上的点<=20)环上每个点跑经过环上的路径就OK了. -------- ...
- BZOJ 4557 JLOI2016 侦查守卫 树形dp
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4557 题意概述: 给出一棵树,每个点付出代价w[i]可以控制距离和它不超过d的点,现在给 ...
- 【NOIP模拟赛】小奇挖矿 2
[题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. [问题描述] 现在有m+1个星球,从左到右标号为0到m,小奇最初在0 ...
- BZOJ 2286 消耗战 (虚树+树形DP)
给出一个n节点的无向树,每条边都有一个边权,给出m个询问,每个询问询问ki个点,问切掉一些边后使得这些顶点无法与顶点1连接.最少的边权和是多少.(n<=250000,sigma(ki)<= ...
随机推荐
- Linux 修改主机名
1 vi /etc/sysconfig/network 2 vi /etc/hosts 3 hostname xxx 4 Done! 退出重连后生效
- SPOJ LCS 后缀自动机找最大公共子串
这里用第一个字符串构建完成后缀自动机以后 不断用第二个字符串从左往右沿着后缀自动机往前走,如能找到,那么当前匹配配数加1 如果找不到,那么就不断沿着后缀树不断往前找到所能匹配到当前字符的最大长度,然后 ...
- Linux怎么读? Linux读音考古一日游
Linux怎么读? Linux读音考古一日游/*凡是准备踏入Linux大门的叉子们(N年不关注了,不知道这个称呼是否还有),都必须经历疑问 那就是linux到底怎么读? 也许有些人很容易 什么里纽克 ...
- numpy模块
NumPy简介: NumPy 是高性能科学计算和数据分析的基础包:它是pandas等其他工具的基础. NumPy的主要功能: 1. ndarray,一个多维数组结构,高效且节省空间 (最主要的功能) ...
- 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
传送门 题目2 : 回文字符序列 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串ab ...
- windows下的asp.net core开发及docker下的发布
参照下面,搭建好开发环境.Docker及配置好Docker加速器 http://www.cnblogs.com/windchen/p/6257846.html 参照下面,将windows共享目录挂载到 ...
- 洛谷——P2820 局域网
P2820 局域网 题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成 ...
- uva 662
dp +路径输出 #include <cstdio> #include <cstdlib> #include <cmath> #include <stack& ...
- Python---django轻量级框架
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- Spring MVC的Hello World例子
以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-mvc-hello-world-example.html: ...