https://www.lydsy.com/JudgeOnline/problem.php?id=5290

https://www.luogu.org/problemnew/show/P4438

的确不是很难的题。

——————————————————

先是吐槽时间(可略过):

设f[i][j][k]为以i为根的子树中j公路不修k铁路不修的最小值。

然后dfs就能过……不过貌似我想的dfs可能要存很多东西……觉得正解肯定没有那么麻烦,于是就弃疗了。

——————————————————

设f[i][j][k]表示i子树叶子到1节点路程j公路不修k铁路不修的最小值。

那么设l=s[u],r=t[u],则f[u][i][j]=min(f[l][i+1][j]+f[r][i][j],f[l][i][j]+f[r][i][j+1]);

当然f数组很大,不过发现一些状态用完了就没有了,所以可以垃圾回收一下。

#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll INF=1e18;
const int N=4e4+5;
inline int read(){int X=0,w=0;char ch=0;while(!isdigit(ch)){w|=ch=='-';ch=getchar();}while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X;
}
int n,tot,s[N],t[N],dfn[N];
ll a[N],b[N],c[N],f[110][41][41];
stack<int>bin;
void dfs(int u,int x,int y){if(u<n){dfs(s[u],x+1,y);dfs(t[u],x,y+1);}if(bin.empty())dfn[u]=++tot;else{dfn[u]=bin.top();bin.pop();}if(u<n){bin.push(dfn[s[u]]);bin.push(dfn[t[u]]);}else{for(int i=0;i<=40;i++)for(int j=0;j<=40;j++)f[dfn[u]][i][j]=c[u]*(a[u]+i)*(b[u]+j);return;}int l=dfn[s[u]],r=dfn[t[u]],k=dfn[u];for(int i=0;i<=x;i++)for(int j=0;j<=y;j++)f[k][i][j]=min(f[l][i+1][j]+f[r][i][j],f[l][i][j]+f[r][i][j+1]);
}
int main(){n=read();for(int i=1;i<n;i++){s[i]=read(),t[i]=read();if(s[i]<0)s[i]=-s[i]+n;if(t[i]<0)t[i]=-t[i]+n;}for(int i=1;i<=n;i++)a[i+n]=read(),b[i+n]=read(),c[i+n]=read();dfs(1,0,0);printf("%lld\n",f[dfn[1]][0][0]);return 0;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/luyouqi233/p/9125158.html

BZOJ5290 洛谷4438:[HNOI/AHOI2018]道路——题解相关推荐

  1. 洛谷4438 [HNOI/AHOI2018]道路

    标签:树形DP 题目 题目传送门 题目描述 W 国的交通呈一棵树的形状.W 国一共有n−1n - 1n−1个城市和nnn个乡村,其中城市从111到n−1n - 1n−1 编号,乡村从111到nnn编号 ...

  2. 洛谷P1462 通往奥格瑞玛的道路 题解

    洛谷P1462 通往奥格瑞玛的道路 题解 题目链接:P1462 通往奥格瑞玛的道路 题意:在艾泽拉斯,有 nnn 个城市.编号为 1,2,3,-,n1,2,3,\ldots,n1,2,3,-,n . ...

  3. Luogu 4438 [HNOI/AHOI2018]道路

    $dp$. 这道题最关键的是这句话: 跳出思维局限大胆设状态,设$f_{x, i, j}$表示从$x$到根要经过$i$条公路,$j$条铁路的代价,那么对于一个叶子结点,有$f_{x, i, j} = ...

  4. 洛谷 1462 通往奥格瑞玛的道路 题解

    博客观赏效果更佳 题意简述 nnn个点mmm条边的无向图,点边均有权.给定bbb.请你找到一个从1到n的路使得边权和<=b且点权的最大值最小. 思路 二分+最短路.对于一个mid,把所有点权&l ...

  5. 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA

    洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA 二分交费最多的一次的钱数 然后只将符合要求的边加入图中 如果到终点的最短路大于等于血量 或者直接起点不能到达终点 那么说明不符合要求 需要 ...

  6. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  7. 洛谷P3336 [ZJOI2013]话旧 题解

    洛谷P3336 [ZJOI2013]话旧 题解 题目链接:P3336 [ZJOI2013]话旧 题意:小林跟着银河队选手去了一趟宇宙比赛,耳濡目染,变得学术起来.回来后,他发现世界大变样了.比丘兽究级 ...

  8. 洛谷P4683 [IOI2008] Type Printer 题解

    洛谷P4683 [IOI2008] Type Printer 题解 题目链接:P4683 [IOI2008] Type Printer 题意: 你需要利用一台可移动的打印机打印出NNN个单词.这种可移 ...

  9. 洛谷P3647 [APIO2014] 连珠线 题解

    洛谷P3647 [APIO2014] 连珠线 题解 题目链接:P3647 [APIO2014] 连珠线 题意: 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或 ...

最新文章

  1. 使用Nmap获取目标服务器开放的服务以及操作系统信息
  2. (干货)微信小程序转发好友
  3. 关于动态规划与备忘录方法的总结
  4. 双指针解决数组排序问题
  5. 怎么写ERP实施方案?
  6. 图片自动播放和动态添加
  7. 在SAP Cloud Platform上消费Business partner service遇到的错误
  8. 随想录(关于论文投稿)
  9. c++字符串数组去重的另类思路
  10. [React Native Android 安利系列]样式与布局的书写
  11. 网络设备常用排障命令——Juniper vyatta 大河SDN
  12. 计算机专业中英文,计算机专业词汇中英文对照
  13. 计算机软件高级证书试题,高级程序员认证考试经验总结
  14. gwas snp 和_新的高密度玉米SNP芯片可用于基因组选择、GWAS和群体遗传学
  15. Qt实现柱状图、饼状图、折线图、曲线图
  16. 微软大战Google Earth的利器-虚拟3D地球“Virtual Earth3D”!
  17. 实时渲染入门:静态光照和动态光照
  18. Java 利用ffmpeg工具实现视频MP4转m3u8
  19. 李宏毅2022机器学习HW2解析
  20. C# WPF 进度条,根据读取数据显示进度条进度,根据Excel文件读取数据,进度条样式...

热门文章

  1. HDOJ 1757 A Simple Math Problem(矩阵快速幂)
  2. eclipse常用设置及调试快捷键
  3. Python 抛异常处理(精)
  4. 使用Xshell连接Ubuntu详解
  5. Linux系统编程:fifo有名管道的使用
  6. Jsoup的简易使用示例
  7. Java 设计模式(3)单例模式
  8. C#/SQL 上周本周
  9. 71道经典Android面试题和答案
  10. 在输出终端中消除多余空格