动态规划(树形DP):HDU 5886 Tower Defence
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 const int N=100010; 6 int cnt,fir[N],nxt[N*2],to[N*2],val[N*2]; 7 void addedge(int a,int b,int v){ 8 nxt[++cnt]=fir[a]; 9 to[fir[a]=cnt]=b; 10 val[cnt]=v; 11 } 12 int Mx[N],dp[N][3],pos[N][2]; 13 void Update(int x,int d,int t){ 14 if(d>dp[x][0]){dp[x][2]=dp[x][1];dp[x][1]=dp[x][0];pos[x][1]=pos[x][0];pos[x][0]=t;dp[x][0]=d;} 15 else if(d>dp[x][1]){dp[x][2]=dp[x][1];pos[x][1]=t;dp[x][1]=d;} 16 else if(d>dp[x][2])dp[x][2]=d; 17 } 18 void DFS(int x,int fa){ 19 for(int i=fir[x];i;i=nxt[i]) 20 if(to[i]!=fa){DFS(to[i],x); 21 int d=dp[to[i]][0]+val[i]; 22 Mx[x]=max(Mx[x],Mx[to[i]]); 23 Update(x,d,to[i]); 24 } 25 Mx[x]=max(Mx[x],dp[x][0]+dp[x][1]); 26 } 27 28 int down[N],give[N]; 29 long long ans; 30 void DP(int x,int fa){ 31 Update(x,give[x],0);//往回走的最长链 32 int d1=0,d2=0,p,d; 33 for(int i=fir[x];i;i=nxt[i]) 34 if(to[i]!=fa){ 35 if(Mx[to[i]]>d1)d2=d1,d1=Mx[to[i]],p=to[i]; 36 else if(Mx[to[i]]>d2)d2=Mx[to[i]]; 37 } 38 for(int i=fir[x];i;i=nxt[i]) 39 if(to[i]!=fa){ 40 if(pos[x][0]==to[i])d=dp[x][1]+dp[x][2]; 41 else if(pos[x][1]==to[i])d=dp[x][0]+dp[x][2]; 42 else d=dp[x][0]+dp[x][1]; 43 44 if(to[i]!=p)d=max(d,d1); 45 else d=max(d,d2); 46 47 d=max(down[x],d);ans+=max(Mx[to[i]],d);down[to[i]]=d; 48 if(pos[x][0]!=to[i])give[to[i]]=dp[x][0]+val[i]; 49 else give[to[i]]=dp[x][1]+val[i]; 50 DP(to[i],x); 51 } 52 } 53 54 void Init(){ 55 memset(give,0,sizeof(give)); 56 memset(down,0,sizeof(down)); 57 memset(fir,0,sizeof(fir)); 58 memset(pos,0,sizeof(pos)); 59 memset(Mx,0,sizeof(Mx)); 60 memset(dp,0,sizeof(dp)); 61 ans=cnt=0; 62 } 63 int T,n; 64 int main(){ 65 scanf("%d",&T); 66 while(T--){ 67 Init();scanf("%d",&n); 68 for(int i=1,a,b,v;i<n;i++){ 69 scanf("%d%d%d",&a,&b,&v); 70 addedge(a,b,v);addedge(b,a,v); 71 } 72 DFS(1,1);DP(1,1); 73 printf("%lld\n",ans); 74 } 75 return 0; 76 }
转载于:https://www.cnblogs.com/TenderRun/p/5882970.html
动态规划(树形DP):HDU 5886 Tower Defence相关推荐
- hdu 5886 Tower Defence 树形期望dp 雪漫防守战
题意: 风暴斗篷现在要攻打雪漫城.雪漫城有n(n≤100000)个哨塔防守,哨塔之间有n-1条路相连,(构成一棵树).现在预测到风暴斗篷要进攻某一条路,然后这棵树就一分为二,现在要得到分开后的最长路. ...
- 动态规划--树形DP
动态规划--树形DP 1.什么是树型动态规划 顾名思义,树型动态规划就是在"树"的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既 ...
- fwt优化+树形DP HDU 5909
1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...
- 动态规划 —— 树形 DP
[概述] 树形动态规划是在树的数据结构上的动态规划,在各个阶段呈现树状关系的时候可以采用树形 DP,其基本思想是由子节点的信息推出父节点的信息. 树形 DP 中,是通过以下 4 点树的特点来进行建图的 ...
- 树形DP——HDU 1011 Starship Troopers
HDU 1011 Starship Troopers 题目 http://acm.hdu.edu.cn/showproblem.php?pid=1011 作为星河战队的领导者,你被派去摧毁这些虫子的基 ...
- 0x54. 动态规划 - 树形DP(习题详解 × 12)
目录 0x54.1 树形DP Problem A. 没有上司的舞会 Problem B. 战略游戏 0x54.2 树上背包 Problem A. 选课 Problem B.[数据加强版]选课(树上背包 ...
- HDU 2196 Computer 树形DP经典题
链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...
- hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5909 点分治的话,每次要做一次树形DP:但时间应该是 siz*m2 的.可以用 FWT 变成 siz*ml ...
- HDU 1520 Anniversary party(树形dp)
HDU 1520 Anniversary party(树形dp) 树形dp第一题!!! 题意很清晰,思路也很明确.很容易找到根节点,即最大的boss,通过根节点向下dp. 状态转移方程: int to ...
最新文章
- Android官方导航栏ActionBar(二)—— Action View、Action Provider、Navigation Tabs的详细用法...
- 存储设备分区,格式化,挂载
- css scale 元素不放大,列元素上的CSS 3动画“transform:scale”对chrome不起作用
- C#类型的强制转换及隐式转换
- Java比较两个实体属性值是否相同,将不同的属性输出
- does not name a type是什么意思_科普:WSGI 是什么,看完保证懂
- P2P(Peer to Peer)网络的原理
- C++的类型转换操作符
- NEON码农指导 Chapter 3 : NEON Instruction Set Architecture
- w ndows10用多大c盘,安装win10系统c盘要多大才够用
- Flutter之以阿里云图标库为例,使用多色图标
- 如何用python计算增长率_如何用excel函数来计算增长率?
- 马哥教育SRE笔记【作业】week04
- c语言中浮点数取整函数,浮点取整函数
- x265-1.7版本-common/quant.cpp注释
- 解读 Apache 多个顶级数据库项目的成长经历与开源文化理念
- ASR 混合高斯模型GMM的理解
- slim的train
- jq实现批量下载和打包下载
- 小傻蛋的妹妹跟随小甲鱼学习Python的第九节009
热门文章
- 我的firefox插件开发历程
- PHP中利用Ffmpeg获得flv视频缩略图和播放时间
- 一起谈.NET技术,浅析五大ASP.NET数据控件
- java垃圾收集方法_java几种垃圾收集方法和垃圾收集器
- Unity3D开发的赛车单机小游戏详细介绍(附有游戏下载链接)
- 2021-02-28 配置Jetty+GeoServer-2.18.2允许CORS跨域访问 - 草稿
- 2019-11-07 检查gcc交叉编译器预定义宏(ARM32/ARM64/X86-64)以及对浮点数的支持情况
- GDAL使用DEM数据计算地形指数
- python类方法和实例方法syntax errors_《Fluent Python》CH.11_面向对象_接口:从协议到抽象基类...
- mysql 临时表 主键_MySQL临时表