【BZOJ1812】[Ioi2005]riv 树形DP
【BZOJ1812】[Ioi2005]riv
Description
Input
Output
Sample Input
1 0 1
1 1 10
10 2 5
1 2 3
Sample Output
题解:憋了一上午想出来的树形DP题~
如何设状态呢?显然n=100,应该是3维的状态,并且有一维是x,有一维是x的子树中建了多少个伐木场,最后一维呢?用y表示x最近的建了伐木场的祖先!
状态都设完了就做完了~用f[x][y][z]表示x子树中建y个伐木场,并且x的木料运到x的z级祖先的最小花费。那么对于y这一维相当于树形背包。对于z这一维,它的儿子运到的位置一定不会比x的z级祖先更远,那么就用f[x][y][z]和f[x'][y'][z'](x'是x的儿子,z'<=z+1)来更新f'[x][y+y'][z]即可。
网上的代码怎么都是左儿子右兄弟啊~
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
int n,m,cnt;
ll ans;
int to[110],next[110],head[110],fa[110][110],sf[110],siz[110],w[110],v[110],dep[110];
ll f[110][110][110],g[110][110];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
inline void add(int a,int b)
{
to[cnt]=b,next[cnt]=head[a],head[a]=cnt++;
}
void dfs(int x)
{
int i,j,k,l,y;
fa[x][0]=x,siz[x]=1;
for(i=0;i<=sf[x];i++) y=fa[x][i],f[x][i][!i]=(dep[x]-dep[y])*w[x];
for(i=head[x];i!=-1;i=next[i])
{
y=to[i],dep[y]=dep[x]+v[y];
for(j=0;j<=sf[x];j++) fa[y][++sf[y]]=fa[x][j];
dfs(y);
memset(g,0x3f,sizeof(g));
for(j=0;j<=sf[x];j++) for(k=min(m,siz[x]);k>=0;k--) for(l=min(m-k,siz[y]);l>=0;l--)
g[j][k+l]=min(g[j][k+l],f[x][j][k]+min(f[y][j+1][l],f[y][0][l]));
siz[x]+=siz[y];
for(j=0;j<=sf[x];j++) for(k=0;k<=min(m,siz[x]);k++) f[x][j][k]=g[j][k];
}
}
int main()
{
n=rd(),m=rd()+1;
memset(head,-1,sizeof(head));
int i;
for(i=1;i<=n;i++) w[i]=rd(),add(rd(),i),v[i]=rd();
memset(f,0x3f,sizeof(f));
dfs(0);
printf("%lld",f[0][0][m]);
return 0;
}
【BZOJ1812】[Ioi2005]riv 树形DP的更多相关文章
- BZOJ1812: [Ioi2005]riv(树形dp)
题意 题目链接 Sol 首先一个很显然的思路是直接用\(f[i][j] / g[i][j]\)表示\(i\)的子树中选了\(j\)个节点,该节点是否选的最小权值.但是直接这样然后按照树形背包的套路转移 ...
- BZOJ 1812: [Ioi2005]riv( 树形dp )
树背包, 左儿子右兄弟来表示树, dp(x, y, z)表示结点x, x的子树及x的部分兄弟共建y个伐木场, 离x最近的伐木场是z时的最小代价. 时间复杂度O(N^2*K^2) ----------- ...
- BZOJ_1812_[Ioi2005]riv_树形DP
BZOJ_1812_[Ioi2005]riv_树形DP Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了 ...
- bzoj1812 [Ioi2005]riv
riv 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海.这条大河的入海口处有一个村庄--名叫B ...
- bzoj1812 [IOI2005]riv河流
题目链接 problem 给出一棵树,每个点有点权,每条边有边权.0号点为根,每个点的代价是这个点的点权\(\times\)该点到根路径上的边权和. 现在可以选择最多K个点.使得每个点的代价变为:这个 ...
- [bzoj1812][IOI2006]riv_多叉树转二叉树_树形dp
riv bzoj-1812 IOI-2006 题目大意:给定一棵n个点树,要求在上面建立k个收集站.点有点权,边有边权,整棵树的代价是每个点的点权乘以它和它的最近的祖先收集站的距离积的和. 注释:$1 ...
- rivers ioi2005 树形dp
说句实话,写完这道题,很想吐一口血出来,以示我心情的糟糕: 题目很简单,树形dp,正常做30分钟,硬是做了好几个小时,真是伤心. 题解不写了,只是吐个槽,网上没有用背包写的dp,全是左儿子右兄弟写法, ...
- 洛谷P3354 [IOI2005]Riv 河流——“承诺”DP
题目:https://www.luogu.org/problemnew/show/P3354 状态中要记录一个“承诺”,只需相同承诺之间相互转移即可: 然后就是树形DP的套路了. 代码如下: #inc ...
- 1812: [Ioi2005]riv
1812: [Ioi2005]riv Time Limit: 10 Sec Memory Limit: 64 MB Submit: 635 Solved: 388 [Submit][Status][D ...
随机推荐
- 在Ubuntu 12.04上配置iSCSI Target服务
今天自己按照网上搜来的教程自己在Ubuntu 12.04上配置了iSCSI Target服务,在这里简单地做个纪录.操作系统是全新安装的Ubuntu 12.04,配置一块500 GB的SATA笔记 ...
- C语言字符串操作总结大全(超具体)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- 记一次R的可视化使用-生成城市各个景点的多边形图
项目中须要用到全国各个城市的景点坐标范围.须要人工审核各个景点的数据正确性和各个景点之间的距离分布.首先想到的就是使用R绘制每一个景点的多边形区域. 首先通过python,依据数据生成R画图代码,当然 ...
- jumpserverv0.5.0 基于 CentOS7安装部署
基于 CentOS 7 一步一步安装 Jumpserver 0.5.0 环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux和防火墙 # CentOS 7 $ ...
- Python 解码 Unicode 转义字符串 (转)
其实,这里要讨论的内容是针对 Python2 的,实际上也是 Python2 中让人头疼的编码问题,而 Python3 则好处理得多. 先来看看例子: >>> s = "我 ...
- 自己动手开发更好用的markdown编辑器-04(实时预览)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/ 程序打包 文章目录 1. 打开新窗口 ...
- 如何将webbrowser控件的Cookie倒入CookieContainer供WebRequest使用
先建一个 "CookieContainer " 把WebBrowser中的Cookie保存在里面 //在WebBrowser中登录 ...
- 设计模式之里氏替换原则(LSP)
在java等面向对象编程语言里面,我想继承性应该是一大特色吧!所以今天所要讲解的里氏替换原则主要是针对这一特性而提出来的,当我们定义对象的时候,尽量找出对象之间的相同点,然后将其抽象成基类对象.比如水 ...
- 深入剖析tomcat的类加载机制
1JVM类加载机制 JVM的ClassLoader通过Parent属性定义父子关系,可以形成树状结构.其中引导类.扩展类.系统类三个加载器是JVM内置的. 它们的作用分别是: 1)引导类加载器:使用n ...
- ptmalloc、tcmalloc和jemalloc
内存优化总结:ptmalloc.tcmalloc和jemalloc 转载 2017年09月05日 18:57:12 3674 转载于:http://www.cnhalo.net/2016/06/13/ ...