Luogu P4438 [HNOI/AHOI2018]道路
题目
注意到\(n\)不大并且深度不大。
记\((u,ls_u)\)为\(L\)边,\((u,rs_u)\)为\(R\)边。
所以我们可以设\(f_{p,i,j}\)表示从根到\(p\)有\(i\)条未标记的\(L\)边和\(j\)条未标记的\(R\)边的最小答案。
对于叶子结点,枚举\(i,j\)套题目给的公式。
对非叶子节点,\(f_{p,i,j}=\min(f_{ls_p,i+1,j}+f_{rs_p,i,j+1},f_{ls_p,i,j+1}+f_{rs_p,i+1,j})\)。
注意到我们是在二叉树上dfs,所以对于一个点,我们计算完其儿子后,其儿子的\(f\)就不需要再用了。这个可以省空间。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=40007;
int n,a[N],b[N],c[N],ls[N],rs[N];ll f[81][41][41];
int read(){int x;scanf("%d",&x);return x;}
int get(){int x=read();return x>0? x:n-x;}
void dfs(int u,int k,int l,int r)
{
if(!ls[u])
{
for(int i=0,j;i<=l;++i) for(j=0;j<=r;++j) f[k][i][j]=1ll*c[u]*(a[u]+i)*(b[u]+j);
return ;
}
dfs(ls[u],k+1,l+1,r),dfs(rs[u],k+2,l,r+1);
for(int i=0,j;i<=l;++i) for(j=0;j<=r;++j) f[k][i][j]=min(f[k+1][i+1][j]+f[k+2][i][j],f[k+1][i][j]+f[k+2][i][j+1]);
}
int main()
{
n=read();int i;
for(i=1;i<n;++i) ls[i]=get(),rs[i]=get();
for(i=1;i<=n;++i) a[i+n]=read(),b[i+n]=read(),c[i+n]=read();
dfs(1,1,0,0),cout<<f[1][0][0];
}
Luogu P4438 [HNOI/AHOI2018]道路的更多相关文章
- 【题解】Luogu P4438 [HNOI/AHOI2018]道路
原题传送门 实际就是一道简单的树形dp 设f[u][i][j]表示从根结点到结点u经过i条未翻修公路,j条未翻修铁路的贡献最小值 边界条件:f[leaf][i][j]=(A+i)(B+j)C (题目上 ...
- 洛谷P4438 [HNOI/AHOI2018]道路(dp)
题意 题目链接 Sol 每当出题人想起他出的HNOI 2018 Day2T3,他都会激动的拍打着轮椅 读题比做题用时长系列... \(f[i][a][b]\)表示从根到\(i\)的路径上,有\(a\) ...
- P4438 [HNOI/AHOI2018]道路
辣稽题目 毁我青春 耗我钱财. 设\(f[x][i][j]\)为从1号点走到x点经过i条公路j条铁路,子树的最小代价. \(f[leaf][i][j]=(A+i)(B+j)C\) \(f[x][i][ ...
- Luogu 4438 [HNOI/AHOI2018]道路
$dp$. 这道题最关键的是这句话: 跳出思维局限大胆设状态,设$f_{x, i, j}$表示从$x$到根要经过$i$条公路,$j$条铁路的代价,那么对于一个叶子结点,有$f_{x, i, j} = ...
- 【题解】Luogu P4436 [HNOI/AHOI2018]游戏
原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建 ...
- BZOJ5290 & 洛谷4438:[HNOI/AHOI2018]道路——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5290 https://www.luogu.org/problemnew/show/P4438 的确 ...
- [HNOI/AHOI2018]道路
Description: W 国的交通呈一棵树的形状.W 国一共有\(n - 1\)个城市和\(n\)个乡村,其中城市从\(1\)到\(n - 1\) 编号,乡村从\(1\)到\(n\)编号,且\(1 ...
- luogu P4437 [HNOI/AHOI2018]排列
luogu 问题本质是把\(a_i\)作为\(i\)的父亲,然后如果有环就不合法,否则每次要取数,要满足取之前他的父亲都被取过(父亲为0可以直接取),求最大价值 贪心想法显然是要把权值大的尽量放在后面 ...
- 【题解】 [HNOI/AHOI2018]道路 (动态规划)
懒得复制,戳我戳我 Solution: \(dp[i][j][k]\)以\(i\)为子树根节点,到根节点中有\(j\)条公路没修,\(k\)条铁路没修,存子树不便利和 \(dp[i][j][k]=mi ...
随机推荐
- JS中生成随机数
1.Math 对象方法: Math.ceil(); //向上取整. Math.floor(); //向下取整. Math.round(); //四舍五入. Math.random(); //0.0 ~ ...
- Linux开机启动和登录时各个文件的执行顺序
1.在Linux内核被加载后,第一个运行的程序便是/sbin/init 该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.其中/etc/inittab文件最主要的作用就是设定Li ...
- git远程相关
git remote add origin git仓库地址 // 添加了远程仓库 git remote remove origin // 移除远程仓库 git push -u origin maste ...
- jquery+css3实现熊猫tv导航效果
效果展示 实现原理 请看以下源代码. <div class="ph-nav" data-pdt-block="pheader-n"> <div ...
- Django JWT
概述 如果各位不了解 JWT,不要紧张,它并不可怕. JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 让我们来假想一下一个 ...
- 解析XML的几种方式:DOM、SAX、PULL
DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构. 优点: 整个文档树在内存中,便于操作:支持删除.修改.重新排列等多种功能. 通过树形结构存 ...
- Apache配置转发
第一种: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_htt ...
- 解决Cannot change version of project facet Dynamic Web Module to 3.1
Open web.xml from project structure http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version= ...
- Spring Data JPA的Respository接口中查询方法
- 第六周&实验四
二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造方法,将半径置0 Cir ...