$dp$。

这道题最关键的是这句话:

跳出思维局限大胆设状态,设$f_{x, i, j}$表示从$x$到根要经过$i$条公路,$j$条铁路的代价,那么对于一个叶子结点,有$f_{x, i, j} = c_x * (a_x + i) * (b_x + j)$,对于内部结点,有转移:

  $f_{x, i, j} = min(f_{lson(x), i + 1, j} + f_{rson(x), i, j}, f_{lson(x), i, j}) + f_{rson(x), i, j + 1}$。

然后$40000 * 40 * 40$就快$512MB$了,然后最后一个点就光荣$MLE$了。

所以要写成记搜的,就可以省掉一半$f$数组的空间。

时间复杂度上界是$O(n * 40 * 40)$。

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;const int N = 20001;
const int M = 41;
const ll inf = 0x3f3f3f3f3f3f3f3f;int n, son[N][2], a[N], b[N], c[N];
ll f[N][M][M];template <typename T>
inline void read(T &X) {X = 0; char ch = 0; T op = 1;for(; ch > '9'|| ch < '0'; ch = getchar())if(ch == '-') op = -1;for(; ch >= '0' && ch <= '9'; ch = getchar())X = (X << 3) + (X << 1) + ch - 48;X *= op;
}template <typename T>
inline T min(T x, T y) {return x > y ? y : x;
}   ll dfs(int x, int i, int j) {if(x >= n) return 1LL * c[x - n + 1] * (a[x - n + 1] + i) * (b[x - n + 1] + j);if(f[x][i][j] != inf) return f[x][i][j];return f[x][i][j] = min(dfs(son[x][0], i + 1, j) + dfs(son[x][1], i, j), dfs(son[x][0], i, j) + dfs(son[x][1], i, j + 1));
}int main() {
//    freopen("road20.in", "r", stdin);
    read(n);for(int lc, rc, i = 1; i < n; i++) {read(lc), read(rc);if(lc < 0) lc = n - 1 - lc;if(rc < 0) rc = n - 1 - rc;son[i][0] = lc, son[i][1] = rc;}for(int i = 1; i <= n; i++) read(a[i]), read(b[i]), read(c[i]);memset(f, 0x3f, sizeof(f));printf("%lld\n", dfs(1, 0, 0));return 0;
}

View Code

转载于:https://www.cnblogs.com/CzxingcHen/p/9908060.html

Luogu 4438 [HNOI/AHOI2018]道路相关推荐

  1. luogu P4438 [HNOI/AHOI2018]道路

    题目传送门:https://www.luogu.org/problemnew/show/P4438 题意: 有n-1个点为城市,n-1个点为农村,每个城市连出两种道路,一边为公路,一边为铁路.现在每一 ...

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

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

  3. BZOJ5290 洛谷4438:[HNOI/AHOI2018]道路——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5290 https://www.luogu.org/problemnew/show/P4438 的确 ...

  4. P4438 [HNOI/AHOI2018]道路

    这题倒是在树形dp的基础上添加了一些操作,但是做好预处理之后跟模板就差不多了 #include<cstdio> #include<cstring> #define neko 1 ...

  5. BZOJ5286:[HNOI/AHOI2018]转盘——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5286 https://www.luogu.org/problemnew/show/P4425 ht ...

  6. BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5289 https://www.luogu.org/problemnew/show/P4437 考虑 ...

  7. [HNOI 2014]道路堵塞

    Description A国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国 交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有 ...

  8. Luogu P1462 通往奥格瑞玛的道路(最短路+二分)

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

  9. HNOI/AHOI2018题解

    作为一名高二老年选手来补一下我省去年的省选题. D1T1:寻宝游戏 按顺序给出\(n\)个\(m\)位的二进制数\(a_i\),再在最前方添一个\(0\), 给出\(q\)次询问,每次询问给出一个同样 ...

最新文章

  1. OpenGL书和资源
  2. DL之GCN:GCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  3. mysql 多表联合查询怎么一行显示_使用 explain 优化你的 mysql 性能
  4. 排序算法(7)----桶排序
  5. 14寸笔记本电脑_纯小白预算5000到6000有什么好的笔记本电脑推荐吗?
  6. 【干货】微信私域运营实战指南.pdf(附下载链接)
  7. vconsole在手机真机模拟器上显示console控制台
  8. 【解决方案】钉钉直播课堂挂机被点到名字怎么办
  9. 【javascript】ajax 基础(转)
  10. 计算机科学与技术高中选课,2019-2021年新高考专业选课要求 大学个专业选科要求解读...
  11. 宝宝专业智力测试软件,儿童医院心理科做智商检测-儿童智力测试仪_儿童注意力测试仪_儿童综合素质测试仪/测评系统...
  12. Bmob后端云——Android再也不担心没有后台了
  13. 四、 按键控制流水灯的运行与暂停
  14. 当你对成功的渴望足以与你对呼吸的渴望相媲美的时候,你就会成功!
  15. Android互动直播APP开发入门笔记,吐血整理
  16. SQL实战(2)——国庆期间每类视频点赞量和转发量
  17. iOS录音麦克风和系统震动的冲突
  18. 根据数据库中的出生年份计算年龄
  19. 辛巴学院-Unity-剑英陪你零基础学c#系列(四)函数和封装
  20. linux端口是什么服务,LINUX的端口和服务有什么关系

热门文章

  1. [转]cocos2d-x
  2. 35个必备的wordpress插件
  3. firebug 的使用
  4. 探测服务器操作系统工具,探测服务器操作系统
  5. python mysql gcc_MySQL-python “error: command 'gcc' failed with exit status 1”错误
  6. html5调用系统声音1s响一次_HTML5声音录制/播放功能的实现代码
  7. android mp4宽高,Android:MediaPlayer视频宽高比问题
  8. 记录值上调10_「阴阳师」10月16日维护更新公告,海国迷踪,迷影重重
  9. efishell无法开机shell_电脑出现EFIshellversion解决方法W1048/海尔青春小蓝
  10. 河南城建学院计算机分数,河南城建学院录取分数线2021是多少分(附历年录取分数线)...