5290: [Hnoi2018]道路

链接

分析:

  注意题目中说每个城市翻新一条连向它的公路或者铁路,所以两种情况分别转移一下即可。

  注意压一下空间,最后的叶子节点不要要访问,空间少了一半。

代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cctype>
#include<set>
#include<vector>
#include<queue>
#include<map>
#define fi(s) freopen(s,"r",stdin);
#define fo(s) freopen(s,"w",stdout);
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = ;
int head[N], ls[N], rs[N], a[N], b[N], c[N], siz0[N], siz1[N], n;
LL dp[][][]; inline LL Calc(int u,int x,int y) { // 从根到u的路径上,表示翻新了x条公路,y条铁路
if (u >= n) return 1ll * c[u] * (siz0[u] - x + a[u]) * (siz1[u] - y + b[u]);
return dp[u][x][y];
} void dfs(int u) {
if (u >= n) { return ;
// for (int i = 0; i <= siz0[u]; ++i)
// for (int j = 0; j <= siz1[u]; ++j)
// dp[u][i][j] = 1ll * c[u] * (siz0[u] - i + a[u]) * (siz1[u] - j + b[u]); // 表示翻新了i条公路,j条铁路
// return ;
}
siz0[ls[u]] = siz0[u] + ; siz1[ls[u]] = siz1[u]; dfs(ls[u]);
siz0[rs[u]] = siz0[u]; siz1[rs[u]] = siz1[u] + ; dfs(rs[u]); for (int i = ; i <= siz0[u]; ++i)
for (int j = ; j <= siz1[u]; ++j) {
dp[u][i][j] = 1e18;
dp[u][i][j] = min(dp[u][i][j], Calc(ls[u], i + , j) + Calc(rs[u], i, j)); // 翻新公路
dp[u][i][j] = min(dp[u][i][j], Calc(ls[u], i, j) + Calc(rs[u], i, j + )); // 翻新铁路
}
}
int main() {
n = read();
for (int i = ; i < n; ++i) {
int u = read(), v = read();
if (u < ) u = -u + n - ;
if (v < ) v = -v + n - ;
ls[i] = u;
rs[i] = v;
}
for (int i = ; i <= n; ++i)
a[i + n - ] = read(), b[i + n - ] = read(), c[i + n - ] = read();
dfs();
cout << dp[][][];
return ;
}

5290: [Hnoi2018]道路的更多相关文章

  1. bzoj 5290: [Hnoi2018]道路

    Description Solution PJDP毁青春 注意到性质:到根的道路不超过 \(40\) 条 所以我们只关系一个点上面的道路的情况就行了 设 \(f[x][i][j]\) 表示一个点 \( ...

  2. 【BZOJ5290】 [Hnoi2018]道路

    BZOJ5290 [Hnoi2018]道路 前言 这道题目我竟然没有在去年省选切? 我太菜了. Solution 对题面进行一个语文透彻解析,发现这是一个二叉树,乡村都是叶子节点,城市都有两个儿子.( ...

  3. [HNOI2018]道路 --- 树形DP

    [HNOI2018]道路 题目描述: W 国的交通呈一棵树的形状.W 国一共有 \(n-1\) 个城市和 \(n\) 个乡村, 其中城市从 \(1\) 到 \(n-1\) 编号,乡村从 \(1\) 到 ...

  4. BZOJ.5290.[AHOI/HNOI2018]道路(树形DP)

    BZOJ LOJ 洛谷 老年退役选手,都写不出普及提高DP= = 在儿子那统计贡献,不是在父亲那统计啊!!!(这样的话不写这个提高DP写记忆化都能过= =) 然后就令\(f[x][a][b]\)表示在 ...

  5. 【BZOJ5290】[HNOI2018]道路(动态规划)

    [BZOJ5290][HNOI2018]道路(动态规划) 题面 BZOJ 洛谷 题目直接到洛谷上看吧 题解 开始写写今年省选的题目 考场上我写了一个模拟退火骗了\(90\)分...然而重测后只剩下45 ...

  6. [HNOI2018]道路(DP)

    题目描述 W 国的交通呈一棵树的形状.W 国一共有n−1n - 1n−1 个城市和nnn 个乡村,其中城市从111 到n−1n - 1n−1 编号,乡村从111 到nnn 编号,且111 号城市是首都 ...

  7. 洛谷4438 [Hnoi2018]道路 【树形dp】

    题目 题目太长懒得打 题解 HNOI2018惊现普及+/提高? 由最长路径很短,设\(f[i][x][y]\)表示\(i\)号点到根有\(x\)条未修公路,\(y\)条未修铁路,子树所有乡村不便利值的 ...

  8. [洛谷P4438] HNOI2018 道路

    问题描述 W 国的交通呈一棵树的形状.W 国一共有n - 1个城市和n个乡村,其中城市从1到n - 1 编号,乡村从1到n编号,且1号城市是首都.道路都是单向的,本题中我们只考虑从乡村通往首都的道路网 ...

  9. [HNOI2018] 道路

    Description 给一棵二叉树,每个叶子节点 \(i\) 有三个属性 \(a_i,b_i,c_i\) 每个非叶子节点都能标记向左右儿子中的一条边(记作 \(x\) 边和 \(y\) 边) 设叶子 ...

随机推荐

  1. MySQL:关于 unauthenticated user

    一.现象 在生产环境中我们偶尔会遇到show processlist:显示host为 unauthenticated user 这样的连接,同时伴有数据库服务器层面的load,sys cpu较高,或者 ...

  2. 设计多选按钮ListChooseView

    设计多选按钮ListChooseView 答应某位女屌丝而写的控件,效果还不错,开源给大家^_^! 效果图: 源码: // // ListChooseView.h // ScrollChooseBut ...

  3. spider-抓取页面内容

    # -*- coding: UTF-8 -*- from HTMLParser import HTMLParser import sys,urllib2,string,re,json reload(s ...

  4. 清除 Exchange 2013/2016/2019 日志和ETL文件

    Exchange Server  的2个日志目录会增长的很快,需要定时清理,不然C盘的空间很快就会吃光,以下这个powershell脚本就是用于清理目录下面的日志的,已在生产环境中测试过,没问题: S ...

  5. 所有文章的测试Demo

    Mqtt C++ Client 测试Demo https://pan.baidu.com/s/1Ue00GYv2SUd8aTquhvOW1w

  6. shell命令工作总结

    shell命令工作总结: 1.sed命令:1.1.将文本input.txt中含有”姓名”字符串的行中的谢朝辉替换成扎巴依:sed -e '/姓名/s/谢朝辉/扎巴依/g' input.txt1.2.将 ...

  7. Bottle + WebUploader 修改Bottle框架从而大文件上传实现方案

    Bottle 是个轻量级的Web框架,小巧又强大,真不愧是个轻量级的框架.可扩展性非常好,可以扩展很多功能,但是有些功能就不得不自己动手修改了. Bottle:http://www.bottlepy. ...

  8. HDU5343:MZL's Circle Zhou(SAM,记忆化搜索DP)

    Description Input Output Sample Input Sample Output Solution 题意:给你两个串,分别从两个里面各选出一个子串拼到一起,问能构成多少个本质不同 ...

  9. Day9 JSP

    JSP概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP实际上就是Servlet. jsp = html + ...

  10. linq to sql 和linq to php 的区别

    linq to sql 这是自.net框架3.5版本以上做出了相关规定. linq to php .Net的linq库的忠实移植到PHP 这个库使得大量使用匿名函数在PHP 5.3中引入的功能.因此, ...