bzoj 5290: [Hnoi2018]道路
Description

Solution
PJDP毁青春
注意到性质:到根的道路不超过 \(40\) 条
所以我们只关系一个点上面的道路的情况就行了
设 \(f[x][i][j]\) 表示一个点 \(x\) ,上面有 \(i\) 条公路没修,\(j\) 条铁路没修的最小代价
\(f[x][i][j]=min(f[ls][i+1][j]+f[rs][i][j],f[ls][i][j]+f[rs][i][j+1])\)
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=40010;
int n,ls[N],rs[N],b[N][2];
ll A[N],B[N],C[N],f[20010][45][45];
int xl[N],yl[N],tn;
inline void DFS(int x,int X,int Y){
xl[x]=X;yl[x]=Y;
if(x>=n)return ;
DFS(ls[x],X+1,Y);
DFS(rs[x],X,Y+1);
}
inline ll F(int x,int i,int j){
if(x<n)return f[x][i][j];
return C[x]*(A[x]+i)*(B[x]+j);
}
inline void dfs(int x){
if(x>=n)return ;
dfs(ls[x]);dfs(rs[x]);
for(int i=0;i<=xl[x];i++)
for(int j=0;j<=yl[x];j++)
f[x][i][j]=min(F(ls[x],i+1,j)+F(rs[x],i,j),F(ls[x],i,j)+F(rs[x],i,j+1));
}
int main(){
scanf("%d",&n);tn=n+n-1;
for(int i=1;i<n;i++){
scanf("%d%d",&b[i][0],&b[i][1]);
if(b[i][0]<0)b[i][0]=-b[i][0]+n-1;
if(b[i][1]<0)b[i][1]=-b[i][1]+n-1;
ls[i]=b[i][0];rs[i]=b[i][1];
}
for(int i=1;i<=n;i++)cin>>A[i+n-1]>>B[i+n-1]>>C[i+n-1];
DFS(1,0,0);
memset(f,127/3,sizeof(f));
dfs(1);
cout<<f[1][0][0]<<endl;
return 0;
}
bzoj 5290: [Hnoi2018]道路的更多相关文章
- 5290: [Hnoi2018]道路
5290: [Hnoi2018]道路 链接 分析: 注意题目中说每个城市翻新一条连向它的公路或者铁路,所以两种情况分别转移一下即可. 注意压一下空间,最后的叶子节点不要要访问,空间少了一半. 代码: ...
- 【BZOJ5290】 [Hnoi2018]道路
BZOJ5290 [Hnoi2018]道路 前言 这道题目我竟然没有在去年省选切? 我太菜了. Solution 对题面进行一个语文透彻解析,发现这是一个二叉树,乡村都是叶子节点,城市都有两个儿子.( ...
- [HNOI2018]道路 --- 树形DP
[HNOI2018]道路 题目描述: W 国的交通呈一棵树的形状.W 国一共有 \(n-1\) 个城市和 \(n\) 个乡村, 其中城市从 \(1\) 到 \(n-1\) 编号,乡村从 \(1\) 到 ...
- BZOJ.5290.[AHOI/HNOI2018]道路(树形DP)
BZOJ LOJ 洛谷 老年退役选手,都写不出普及提高DP= = 在儿子那统计贡献,不是在父亲那统计啊!!!(这样的话不写这个提高DP写记忆化都能过= =) 然后就令\(f[x][a][b]\)表示在 ...
- 【BZOJ5290】[HNOI2018]道路(动态规划)
[BZOJ5290][HNOI2018]道路(动态规划) 题面 BZOJ 洛谷 题目直接到洛谷上看吧 题解 开始写写今年省选的题目 考场上我写了一个模拟退火骗了\(90\)分...然而重测后只剩下45 ...
- bzoj 2435: [Noi2011]道路修建 树上 dp
2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- [BZOJ 3995] [SDOI2015] 道路修建 【线段树维护连通性】
题目链接:BZOJ - 3995 题目分析 这道题..是我悲伤的回忆.. 线段树维护连通性,与 BZOJ-1018 类似,然而我省选之前并没有做过 1018,即使它在 ProblemSet 的第一页 ...
- BZOJ 2435: [Noi2011]道路修建( dfs )
NOI的水题...直接一遍DFS即可 ------------------------------------------------------------------------- #includ ...
- bzoj 3575: [Hnoi2014]道路堵塞
Description A 国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国交通部指定了一条从城市1到城市N的路径, 并且保证这条路径的长度是所 ...
随机推荐
- C语言第三次作业---单层循环结构
一.PTA实验作业 题目一.最佳情侣身高差 1.实验代码 int N;//存放输入的人数 char sex; double hight1,hight2;//分别存放输入的身高和输出的身高 scanf( ...
- C语言第四次博客作业
一.PTA实验作业 题目1.梅森数 1.本题PTA提交列表(要提交列表,不是结果) 2. 设计思路(此处用流程图最好) 1.定义三个变量n,num,count,且初始化count为1 2.读取一个数n ...
- alpha-咸鱼冲刺day3-紫仪
总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 今天把数据库的表给建好了,学长那边把登陆跟注册页面也做好了(纯页面,html5+css的那种) 四,问题困难 日常 ...
- 【Swift】 iOS开发容易产生Bug的地方
1.隐藏navigationBar(尤其是多级隐藏) 2.共用collectionView或tableView 3.继承关系下,注意覆写父类时的super方法的调用 4.关于权限的问题(相机权限,相册 ...
- 【iOS】Swift ?和 !(详解)
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值, 也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化 .如果在使用变量之前不进行初始化就会报错: [ ...
- 清华集训2015 V
#164. [清华集训2015]V http://uoj.ac/problem/164 统计 描述 提交 自定义测试 Picks博士观察完金星凌日后,设计了一个复杂的电阻器.为了简化题目,题目中的常数 ...
- day-3 python多线程编程知识点汇总
python语言以容易入门,适合应用开发,编程简洁,第三方库多等等诸多优点,并吸引广大编程爱好者.但是也存在一个被熟知的性能瓶颈:python解释器引入GIL锁以后,多CPU场景下,也不再是并行方式运 ...
- linux下面的智能解压脚本smart解压
file命令可以辨别出一个给定文件的文件类型,如:file lf.gz,其输出结果为: lf.gz: gzip compressed data, deflated, original filename ...
- c语言中宏定义和常量定义的区别
他们有共同的好处就是"一改全改,避免输入错误"哪两者有不同之处吗?有的. 主要区别就在于,宏定义是在编译之前进行的,而const是在编译阶段处理的 宏定义不占用内存单元而const ...
- 有货前端 Web-APM 实践
有货前端 Web-APM 实践 0 背景 有货电商技术架构上采用的是前后端分离,前端是主要以业务展示和接口聚合为主,拥有自己的 BFF (Backend For Frontend),以 nodejs ...