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+;
inline int read(){
int X=,w=;char ch=;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
int n,tot,s[N],t[N],dfn[N];
ll a[N],b[N],c[N],f[][][];
stack<int>bin;
void dfs(int u,int x,int y){
if(u<n){
dfs(s[u],x+,y);dfs(t[u],x,y+);
}
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=;i<=;i++)
for(int j=;j<=;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=;i<=x;i++)
for(int j=;j<=y;j++)
f[k][i][j]=min(f[l][i+][j]+f[r][i][j],f[l][i][j]+f[r][i][j+]);
}
int main(){
n=read();
for(int i=;i<n;i++){
s[i]=read(),t[i]=read();
if(s[i]<)s[i]=-s[i]+n;
if(t[i]<)t[i]=-t[i]+n;
}
for(int i=;i<=n;i++)a[i+n]=read(),b[i+n]=read(),c[i+n]=read();
dfs(,,);
printf("%lld\n",f[dfn[]][][]);
return ;
}

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

+本文作者:luyouqi233。               +

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

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

BZOJ5290 & 洛谷4438:[HNOI/AHOI2018]道路——题解的更多相关文章

  1. 洛谷P4438 [HNOI/AHOI2018]道路(dp)

    题意 题目链接 Sol 每当出题人想起他出的HNOI 2018 Day2T3,他都会激动的拍打着轮椅 读题比做题用时长系列... \(f[i][a][b]\)表示从根到\(i\)的路径上,有\(a\) ...

  2. [Bzoj5285][洛谷P4424][HNOI/AHOI2018]寻宝游戏(bitset)

    P4424 [HNOI/AHOI2018]寻宝游戏 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生 ...

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

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

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

    [题目]: https://www.luogu.org/problemnew/show/P1462 题意 题目是给定了一张双向边,有边权的图,然后让我们求出一个最小值,满足一条路径上的最大的费用小于这 ...

  5. 洛谷P4425 [HNOI/AHOI2018]转盘(线段树)

    题意 题目链接 Sol 首先猜一个结论:对于每次询问,枚举一个起点然后不断等到某个点出现时才走到下一个点一定是最优的. 证明不会,考场上拍了3w组没错应该就是对的吧... 首先把数组倍长一下方便枚举起 ...

  6. 洛谷P4424 [HNOI/AHOI2018]寻宝游戏(思维题)

    题意 题目链接 Sol 神仙题Orz Orz zbq爆搜70.. 考虑"与"和"或"的性质 \(0 \& 0 = 0, 1 \& 0 = 0\) ...

  7. Luogu 4438 [HNOI/AHOI2018]道路

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

  8. [洛谷P4436] HNOI/AHOI2018 游戏

    问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H ...

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

    题目链接:https://www.luogu.com.cn/problem/P1462 题目大意: 有 \(n\) 个点 \(m\) 条边,每个点有一个点权,每个边有一个边权.求所有长度不超过 \(b ...

随机推荐

  1. 调用bash的时候出现curl command not found

    调用bash的时候出现curl command not found 解决办法: apt-get install curl

  2. ogg的安装配置 配置双向同步(含DDL)

    第一部分 先配置单向同步(含DDL) 一 源端安装GoldenGate 创建用户 创建目录 mkdir -p /opt/ogg chmod -R 777 /opt/ogg chown -R oracl ...

  3. hdu1176免费馅饼(动态规划,数塔)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. Linux命令应用大词典-第3章 文本编辑器

    3.1 vi:文本编辑器 3.2 nano:编辑器 3.3 view:文办编辑器 3.4 ex:文本编辑器 3.5 ed:文本编辑器 3.6 red:文本编辑器 3.1 vi:文本编辑器 1.对文本创 ...

  5. Android 简介

    一 Android起源 android: 机器人 android是google公司开发的基于Linux2.6的免费开源操作系统 2005 Google收购 Android Inc. 开始 Dalvik ...

  6. leetcode-买卖股票的最佳时机(动态规划)

    买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股 ...

  7. Java学习 · 初识 面向对象深入一

    面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...

  8. LeetCode - 412. Fizz Buzz - ( C++ ) - 解题报告 - to_string

    1.题目大意 Write a program that outputs the string representation of numbers from 1 to n. But for multip ...

  9. 五:Edits Viewer离线日志查看器

    离线日志查看器可以将二进制日志翻译成可读的文件(如XML),只有当hadoop集群停止时才能使用.输入文件支持的类型:XML和二进制.输出文件支持类型:XML 二进制 Stats(标准输出?)     ...

  10. HADOOP docker(四):安装hive

    1.hive简介2.安装hive2.1 环境准备2.1.1 下载安装包2.1.2 设置hive用户的环境变量2.1.3 hive服务端配置文件2.1.4 hive客户端配置文件2.1.4 分发hive ...