Description

8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪。但GLaDOS想把传送枪据为己有,于是把Normalgod扔进了一间实验室。这间实验室是一棵有n个节点的树。现在Normalgod在一号节点,出口也在一号节点,但为了打开它,必须经过每一个节点按下每个节点的开关,出口才能打开。GLaDOS为了杀死Normalgod,开始在实验室里释放毒气,因此Normalgod必须尽快逃出这间实验室。
            当然,Normalgod手中的传送枪是可以使用的。传送枪可以发射出两个颜色不同的传送门。Normalgod可以从其中一个传送到另一个。尽管传送枪可以在视野范围内的任何一个经过特殊处理的表面打开一扇传送门,但这间实验室的设计使得Normalgod只能在他所处的房间内打开一个传送门。 在已经存在了一个同颜色的传送门时,打开新的传送门会使与它同颜色的旧门消失。传送和打开传送门所需时间为0。
             显然,利用传送枪会让Normalgod更快解决谜题,可Normalgod死在了按下最后一个按钮的路上。尽管如此,GLaDOS还是很想知道到底Normalgod最快能用多久逃出去,这对她的实验室设计方法论有重要的指导作用。作为GLaDOS的算法模块,你要完成这个任务。本题时限为2000ms

Input

第一行一个整数n。之后n-1行,每行三个整数ui,vi,ai ,表示有一条从ui 连向vi ,花费时间为ai 的通道。

Output

一行一个数T,表示最小的脱逃时间。

Sample Input

5
1 2 2
2 3 3
2 4 5
1 5 1

Sample Output

13样例说明
1--> open1--> 5--> open2--> use(1)--> 2--> 3--> open2--> use(1)--> 2--> 4--> open2--> use(1)--> exit

Data Constraint

Solution 

  我们可以采用动态规划来求解 dp[i][0/1]

  0表示在i点及i点儿子设传送门所能得到的最大总和

  1 表示不在i点及i点儿子设传送门所能得到的最大总和

  首先,对于dp[i][1]的情况,一定存在i点的祖先中有传送门,这样才能使结果更优。所以对于他的每一个儿子都能跳回到他的祖先。但实际上只有使一个儿子跳回祖先时,才能保证fa->i的边经过两次。

  否则转化为dp[i][0]的情况。则我们要使选的儿子最优。

  dp[i][1]=max(dp[vi][1]+wi);

  其次,对于dp[i][0]的情况,在每个儿子中设立传送门并不会影响到其他儿子,因为总能从儿子回到i时再在i重设传送门。所以我们就取每个儿子设与不设的最优值之和。

  dp[i][0]=max(dp[vi][0],dp[vi][1]+wi);

 1 #include <cstdio>
 2 #define N 1000007
 3 #define LL long long
 4 using namespace std;
 5 struct arr {
 6     long long w;
 7     int x,y,next;
 8 };
 9 arr edge[N*2];
10 int ls[N],n;
11 LL f[N][2],ans;
12 bool p[N];
13
14 LL max(LL x,LL y){
15     if (x>y) return x;
16     return y;
17 }
18
19 int dfs(int s){
20     int i=ls[s];
21     while (i!=0){
22         int d=edge[i].y;
23         if (p[d]){
24             p[d]=false;
25             dfs(d);
26             f[s][1]=max(f[s][1],f[d][1]+edge[i].w);
27             f[s][0]+=max(f[d][0],f[d][1]+edge[i].w);
28         }
29         i=edge[i].next;
30     }
31 }
32
33 int add(int x,int y,LL w,int e){
34     edge[e].x=x; edge[e].y=y; edge[e].w=w;
35     edge[e].next=ls[edge[e].x]; ls[edge[e].x]=e;
36     edge[--e].x=y; edge[e].y=x; edge[e].w=w;
37     edge[e].next=ls[edge[e].x]; ls[edge[e].x]=e;
38 }
39
40 int main()
41 {
42     scanf("%d",&n);
43     ls[1]=1;
44     for (int i=1;i<n;i++){
45         int x,y;
46         LL w;
47         scanf("%d%d%lld",&x,&y,&w);
48         add(x,y,w,i*2);
49         ans+=w*2;
50     }
51     for (int i=1;i<=n;i++)
52         p[i]=true;
53     p[1]=false;
54     dfs(1);
55     ans-=max(f[1][1],f[1][0]);
56     printf("%lld\n",ans);
57 }

View Code

转载于:https://www.cnblogs.com/Tokisaki-Kurumi/p/9800966.html

JZOJ5906 传送门相关推荐

  1. 进大厂全靠自学,微软头条实习生现身说法:我是这样自学深度学习的丨课程传送门...

    作者 Sanny Kim  郭一璞 编译  量子位 出品 | 公众号 QbitAI 跟着网络资料自学.刷MOOC是许多人学深度学习的方式,但深度学习相关资源众多,应该从哪儿开始学呢? 富有自学经验的G ...

  2. 鸿洋android屏幕适配四部曲-传送门

    鸿洋android屏幕适配四部曲-传送门 两分钟理解Android中PX.DP.SP的区别 https://blog.csdn.net/donkor_/article/details/77680042 ...

  3. 传送门骑士修改服务器数据,传送门骑士修改经验 | 手游网游页游攻略大全

    发布时间:2015-09-10 很多玩玩家在玩传送门骑士的时候点到了超屏幕的分辨率,之后就一直调整不回来了,碰到这种情况该怎么办呢?这里小编给大家带来了传送门骑士分辨率设置方法介绍,感兴趣的玩家不妨来 ...

  4. 干货盘点:神策数据深度用户案例传送门

    2017,是值得欣喜的一年. 有成百上千的数据驱动标杆客户, 陪神策走过了成长的岁月. 他们在数据分析方面积累了丰富的经验, 并乐于分享. 为了方便大家找到 我们精选数期, 为大家打开了万能的传送门- ...

  5. JZOJ 5906. 【NOIP2018模拟10.15】传送门 (portal)

    Description 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传送枪据为己有,于是把Normalgod扔进了一间实验室.这间实验室是一棵有n个节点的树 ...

  6. 进大厂全靠自学,微软amp;头条实习生现身说法:我是这样自学深度学习的丨课程传送门...

    作者 Sanny Kim  郭一璞 编译  量子位 出品 | 公众号 QbitAI 跟着网络资料自学.刷MOOC是许多人学深度学习的方式,但深度学习相关资源众多,应该从哪儿开始学呢? 富有自学经验的G ...

  7. 用Unity实现传送门效果(一)

    知乎专栏:游戏开发入门指南--Unity+ https://zhuanlan.zhihu.com/gdguide 大家好. 接下来的两篇内容,是用Unity来做传送门的效果.这里是用自己的方法来做的, ...

  8. Test传送门(更新中)

    一.Codeforces传送门: Avito Code Challenge 2018  题解传送门 Codeforces Round #485 (Div. 2)     题解传送门 二.hihocod ...

  9. IdentityServer4学习笔记汇总(实现传送门在底部)

    前言 互联网时代,对信息和资源的保护越发苛刻,在所有应用中授权和认证是必不可少缺少的一部分.如果一个应用没有授权和认证那么这个应用就是不完整或者说不安全的应用.在.Net平台给我们提供了一套完整的授权 ...

最新文章

  1. Flink从入门到精通100篇(四)-基于 Flink 和 Drools 的实时日志处理
  2. linux下数据库时间格式,Java编程时间格式与数据库中时间格式转化
  3. 信息学奥赛一本通C++语言——1123:图像相似度
  4. 《连线》杂志专访李彦宏:百度all in AI 欲引领智能革命
  5. SQLServer-----SQLServer 2008 R2安装
  6. unity3d C#UnityEngine API 提示中文汉化
  7. GBK与GB2312
  8. 实车开放道路真体验,开启车联网发展新征程
  9. jike2021总结
  10. 职场上做“独狼”注定失败
  11. ESP32编程使用OLED屏
  12. 卡西欧计算机设置参数,【卡西欧 fx-991CN X 中文函数计算器使用总结】参数|功能|显示|计算_摘要频道_什么值得买...
  13. PostgreSQL的学习心得和知识总结(八十九)|深入理解PostgreSQL数据库开源MPP扩展Citus再平衡函数rebalance_table_shards的实现原理
  14. 感恩,生命的馈赠(2014年终总结)
  15. MFC VS2010 Open CASCADE新建自己的工程
  16. ROS1中Gazebo案例都有哪些机器人呢(Noetic2022)
  17. 传奇黑客用一台手机换了跑车
  18. EDB PPAS(Oracle 兼容版) Oracle与PostgreSQL 兼容模式的参数配置切换
  19. python制作会动的表情包_Python自动生成表情包
  20. 基于经纬度进行商圈定位

热门文章

  1. 启动docker容器时报错:iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT -
  2. operator-sdk实战开发K8S CRD自定义资源对象
  3. Linux crontab定时任务示例
  4. linux userdel删除用户命令
  5. Python Django 设置/更改响应头信息
  6. MySQL -- Lock wait timeout exceeded; try restarting transaction参数控制
  7. jQuery EasyUI 选项卡面板tabs使用实例精讲
  8. 富满电子鸿蒙系统,电子行业周报:HARMONYOS+2.0助力AIOT生态体系发展
  9. 天翼云centos7.5系统挂载磁盘
  10. Qt 3D的未来展望