道路

题目背景:

5.8 模拟 HNOI2018D2T3

分析:记忆化搜索

没什么难度的裸DP,直接定义dp[i][j][k]表示以i为根的子树中,i到跟有j条没有修过的公路,k条没有修过的铁路,然后如果是乡村则直接返回计算过的答案,否则

dp[i][j][k] = std::min(dp[lc[i]][j][k] + dp[rc[i]][j][k + 1]

, dp[lc[i]][j+ 1][k], dp[rc[i]][j][k])

(lc[i]表示i的公路下的儿子,rc[i]是铁路下的)

直接记忆化搜索就好了,注意要开long long。

时间复杂度O(n * 40 * 40)

Source:

/*created by scarlyw
*/
#include <cstdio>
#include <string>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
#include <cctype>
#include <vector>
#include <set>
#include <queue>
#include <ctime>
#include <bitset>inline char read() {static const int IN_LEN = 1024 * 1024;static char buf[IN_LEN], *s, *t;if (s == t) {t = (s = buf) + fread(buf, 1, IN_LEN, stdin);if (s == t) return -1;}return *s++;
}///*
template<class T>
inline void R(T &x) {static char c;static bool iosig;for (c = read(), iosig = false; !isdigit(c); c = read()) {if (c == -1) return ;if (c == '-') iosig = true; }for (x = 0; isdigit(c); c = read()) x = ((x << 2) + x << 1) + (c ^ '0');if (iosig) x = -x;
}
//*/const int OUT_LEN = 1024 * 1024;
char obuf[OUT_LEN];
char *oh = obuf;
inline void write_char(char c) {if (oh == obuf + OUT_LEN) fwrite(obuf, 1, OUT_LEN, stdout), oh = obuf;*oh++ = c;
}template<class T>
inline void W(T x) {static int buf[30], cnt;if (x == 0) write_char('0');else {if (x < 0) write_char('-'), x = -x;for (cnt = 0; x; x /= 10) buf[++cnt] = x % 10 + 48;while (cnt) write_char(buf[cnt--]);}
}inline void flush() {fwrite(obuf, 1, oh - obuf, stdout), oh = obuf;
}/*
template<class T>
inline void R(T &x) {static char c;static bool iosig;for (c = getchar(), iosig = false; !isdigit(c); c = getchar())if (c == '-') iosig = true; for (x = 0; isdigit(c); c = getchar()) x = ((x << 2) + x << 1) + (c ^ '0');if (iosig) x = -x;
}
//*/const int MAXN = 20000 + 10;
const int MAXX = 40 + 2;int n;
long long dp[MAXN][MAXX][MAXX];
int a[MAXN], b[MAXN], c[MAXN], lc[MAXN], rc[MAXN];inline long long calc(int id, int x, int y) {return (long long)c[id] * (a[id] + x) * (b[id] + y);
}inline long long dfs(int cur, int x, int y) {if (cur < 0) return calc(-cur, x, y);if (dp[cur][x][y] != -1) return dp[cur][x][y];dp[cur][x][y] = std::min(dfs(lc[cur], x, y) + dfs(rc[cur], x, y + 1), dfs(lc[cur], x + 1, y) + dfs(rc[cur], x, y));return dp[cur][x][y];
}inline void read_in() {R(n), memset(dp, -1, sizeof(dp));for (int i = 1; i < n; ++i) R(lc[i]), R(rc[i]);for (int i = 1; i <= n; ++i) R(a[i]), R(b[i]), R(c[i]);
}int main() {freopen("road.in", "r", stdin);freopen("road.out", "w", stdout);read_in();std::cout << dfs(1, 0, 0);return 0;
}

NOI模拟(5.8) HNOID2T3 道路 (bzoj5290)相关推荐

  1. JZOJ 7066. 【2021.4.24 NOI模拟】ehzeux与圆周(DP)

    JZOJ 7066. [2021.4.24 NOI模拟]ehzeux与圆周 题目大意 圆周上有2∗n2*n2∗n个点,两两相连构成nnn个点对,其中有mmm个点对已经连好,求所有方案下的连通块数量和. ...

  2. 2021年道路运输企业主要负责人模拟考试题库及道路运输企业主要负责人实操考试视频

    题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:道路运输企业主要负责人模拟考试题库根据新道路运输企业主要负责人考试大纲要求,安全生产模拟考试一点通将道路运输企业主要负责人模拟考试 ...

  3. JZOJ 3808. 【NOIP2014模拟8.25】道路值守

    Description Crossbell 自治州有着四通八达的现代化交通.时值独立庆典之际,随着来自周边国家旅客的日益增 多,犯罪行为也悄无声息开始滋长起来. 特别任务支援科的警察们从总部收到了关于 ...

  4. NOI模拟(5.11) BJOID2T3 治疗之雨 (bzoj5292)

    治疗之雨 题目背景: 5.11 模拟 BJOI2018D2T3 分析:期望DP + 高斯消元优化 我对这道题真的是有一千句喵喵喵,因为一句特判没写,100变10分,内心崩溃.直接说正解吧,定义dp[i ...

  5. NOI模拟(5.19) JSOID2T3 军训列队 (bzoj5319)

    军训列队 题目背景: 5.19 模拟 JSOI2018D2T3 分析:二分 + 主席树 没有想到啊,最水的题竟然在T3,考虑显然如果按照原本的相对顺序填入集合区间,所得的代价一定是最优越的,那么也就是 ...

  6. NOI模拟(5.23) TJOID2T3 教科书般的亵渎 (bzoj5339)

    教科书般的亵渎 题目背景: 5.23 模拟 TJOI2018D2T3 分析:拉格朗日差值 这个题的题意怕不是有毒,注意他每一次的k是相同的,为总共要用多少次卡片,然后卡片是每次先将所有的数减一,如果这 ...

  7. NOI模拟题4 Problem C: 填格子(board)

    Solution 首先我们要有敏锐的直觉: 我们将每一列中不选哪种颜色看作是一个序列, 则我们发现这个序列要求相邻两位的颜色不同. 我们还发现, 一个这样的序列对应两种不同的合法的棋盘, 因此统计合法 ...

  8. 【NOI模拟赛】黑色大桥(DP优化,李超树)

    题面 时间限制:1s,空间限制:1024MB 题目描述 手拿咒刃砍金门,众神直呼不是人 椅子玩自定义咒刃,一路打到了第三关的银行,祂想在黑色大桥无伤看守者之前找点刺激的. 加了模组的银行极大.具体地说 ...

  9. NOI 模拟试题(一)

    智子入侵 [题目背景] 三体发现了人类. 在疲于应付三个无法预测规律的太阳的时候,地球是他们唯一的希望. 为了限制住人类的基础物理研究,避免 300 年的技术爆炸,智子到达了地球. 目标:所有的粒子对 ...

  10. NOI模拟 : Vain (并查集维护割点)

    题意: 对于 1 ≤ i ≤ n, 求出点 i 度数强制为 1 的情况下最小生成树的最大边的权值. 题解: 相当于求出删掉每个点之后的MSTMSTMST的最大值. 我们按边的权值从小到大加入新图, 很 ...

最新文章

  1. 清华唐杰:GPT-3表示能力已经接近人类了
  2. 网络请求UI自动切换框架
  3. Linux 调优方案, 修改最大连接数(ulimit命令)
  4. NetCore下模拟和使用Modbus工业通信协议
  5. Ajax-基础篇(持续更新01)
  6. 【Elasticsearch】elasticsearch里面的关于批量读取mget的用法
  7. 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
  8. javascript-DOM-节点
  9. 3.4 神经网络概述、tensorflow2实现——python实战
  10. Android 图片处理方法大全
  11. 枚举基类Enum详解
  12. 阿里云云计算 18 块存储与对象存储
  13. 抖音小程序达人入驻壁纸微信小程序安装教程
  14. 华为路由器配置SSH认证登陆教程
  15. FME 应用cad处理
  16. 新增经营情况汇总报表
  17. 【雕爷学编程】Arduino动手做(59)---RS232转TTL串口模块
  18. MYSQL统计收益排名
  19. Spring-IoC注解
  20. 全程实操 | 最新版OpenCV4.4免费视频课程送给大家

热门文章

  1. linux未找到telnet命令
  2. 硬盘安装Fedora 9成功
  3. 批处理获取管理员权限
  4. 经济应用文写作【5】
  5. 猜数字游戏程序,随机生成一个1~10之间的数,并让用户输入一个数字 猜测
  6. java网吧系统_基于SSM框架下的JAVA网吧管理系统
  7. 牛客网华为机试题java,华为机试题
  8. 计算机主板不认硬盘怎么回事,主板sata接口不认硬盘怎么办
  9. Flash Builder 4.6桌面项目在Flash Builder 4.7中打开遇到的问题
  10. 夏普ar2048s打印机驱动安装_驱动人生 下载安装打印机驱动的方法