Luogu 4438 [HNOI/AHOI2018]道路
$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]道路相关推荐
- luogu P4438 [HNOI/AHOI2018]道路
题目传送门:https://www.luogu.org/problemnew/show/P4438 题意: 有n-1个点为城市,n-1个点为农村,每个城市连出两种道路,一边为公路,一边为铁路.现在每一 ...
- 洛谷4438 [HNOI/AHOI2018]道路
标签:树形DP 题目 题目传送门 题目描述 W 国的交通呈一棵树的形状.W 国一共有n−1n - 1n−1个城市和nnn个乡村,其中城市从111到n−1n - 1n−1 编号,乡村从111到nnn编号 ...
- BZOJ5290 洛谷4438:[HNOI/AHOI2018]道路——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5290 https://www.luogu.org/problemnew/show/P4438 的确 ...
- P4438 [HNOI/AHOI2018]道路
这题倒是在树形dp的基础上添加了一些操作,但是做好预处理之后跟模板就差不多了 #include<cstdio> #include<cstring> #define neko 1 ...
- BZOJ5286:[HNOI/AHOI2018]转盘——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5286 https://www.luogu.org/problemnew/show/P4425 ht ...
- BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5289 https://www.luogu.org/problemnew/show/P4437 考虑 ...
- [HNOI 2014]道路堵塞
Description A国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国 交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有 ...
- Luogu P1462 通往奥格瑞玛的道路(最短路+二分)
P1462 通往奥格瑞玛的道路 题面 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己 ...
- HNOI/AHOI2018题解
作为一名高二老年选手来补一下我省去年的省选题. D1T1:寻宝游戏 按顺序给出\(n\)个\(m\)位的二进制数\(a_i\),再在最前方添一个\(0\), 给出\(q\)次询问,每次询问给出一个同样 ...
最新文章
- OpenGL书和资源
- DL之GCN:GCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- mysql 多表联合查询怎么一行显示_使用 explain 优化你的 mysql 性能
- 排序算法(7)----桶排序
- 14寸笔记本电脑_纯小白预算5000到6000有什么好的笔记本电脑推荐吗?
- 【干货】微信私域运营实战指南.pdf(附下载链接)
- vconsole在手机真机模拟器上显示console控制台
- 【解决方案】钉钉直播课堂挂机被点到名字怎么办
- 【javascript】ajax 基础(转)
- 计算机科学与技术高中选课,2019-2021年新高考专业选课要求 大学个专业选科要求解读...
- 宝宝专业智力测试软件,儿童医院心理科做智商检测-儿童智力测试仪_儿童注意力测试仪_儿童综合素质测试仪/测评系统...
- Bmob后端云——Android再也不担心没有后台了
- 四、 按键控制流水灯的运行与暂停
- 当你对成功的渴望足以与你对呼吸的渴望相媲美的时候,你就会成功!
- Android互动直播APP开发入门笔记,吐血整理
- SQL实战(2)——国庆期间每类视频点赞量和转发量
- iOS录音麦克风和系统震动的冲突
- 根据数据库中的出生年份计算年龄
- 辛巴学院-Unity-剑英陪你零基础学c#系列(四)函数和封装
- linux端口是什么服务,LINUX的端口和服务有什么关系
热门文章
- [转]cocos2d-x
- 35个必备的wordpress插件
- firebug 的使用
- 探测服务器操作系统工具,探测服务器操作系统
- python mysql gcc_MySQL-python “error: command 'gcc' failed with exit status 1”错误
- html5调用系统声音1s响一次_HTML5声音录制/播放功能的实现代码
- android mp4宽高,Android:MediaPlayer视频宽高比问题
- 记录值上调10_「阴阳师」10月16日维护更新公告,海国迷踪,迷影重重
- efishell无法开机shell_电脑出现EFIshellversion解决方法W1048/海尔青春小蓝
- 河南城建学院计算机分数,河南城建学院录取分数线2021是多少分(附历年录取分数线)...