我們首先發現,每一條邊都至少走1次,因為我們必須走到每一個節點按按鈕

如果我們不走一個節點,說明這個節點已經有傳送門了,但是必須走到這個節點開傳送門,矛盾

然後我們發現,每一條邊至多經過2次

如果我們將傳送門設置在一個祖先,則邊fa->i會經過兒子個數次

但是如果將傳送門設置在兒子u處,則邊fa->i只會經過2次,更優

我們再次發現,傳送的位置和第一個傳送門有關係,而和第二個無關

所以我們可以先設置兒子的傳送門,再設置父親的傳送門

顯然,設置傳送門可以讓一些邊只走1次,我們可以計算最優方案

記dp[i][0/1]表示在/不在i點設置傳送門的單邊權值之和

若設置傳送門於祖先,則為了保證祖先的邊只走2次或者以下,則只能放一個孩子到祖先,其他都老老實實的走2遍

所以dp[i][1]=max(dp[i][1],dp[v[i]][1]+w[i])

若設置傳送門于當前點或者孩子,那麼我們可以走孩子邊

由於我們設置傳送門在孩子不會影響到父親,所以我們可以綜合選和不選的方案

所以dp[i][0]= sigma max(dp[v[i]][0],dp[v[i]][1]+w[i])

表示現在我們在v[i]設置傳送門的方案,與不在v[i]設置傳送門的方案

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll n,v[2000010],w[2000010],nxt[2000010],ec,h[1000010],dp[1000010][2];

void add(ll x,ll y,ll z){v[++ec]=y;w[ec]=z;nxt[ec]=h[x];h[x]=ec;}

void dfs(ll x,ll p){

for(ll i=h[x];i;i=nxt[i])

if(p!=v[i]){

dfs(v[i],x);

dp[x][1]=max(dp[x][1],dp[v[i]][1]+w[i]);

dp[x][0]+=max(dp[v[i]][0],dp[v[i]][1]+w[i]);

}

}

int main(){

freopen(“portal.in”,“r”,stdin);

freopen(“portal.out”,“w”,stdout);

ll ans=0;

scanf("%lld",&n);

for(ll i=1;i<n;i++){

ll a,b,c;

scanf("%lld%lld%lld",&a,&b,&c);

ans+=c*2;

add(a,b,c);add(b,a,c);

}

dfs(1,0);

printf("%lld",ans-dp[1][0]);

}

jzoj5906的更多相关文章

  1. <JZOJ5906>传送门

    emmm dpdpdp然鹅我考场上并想不到 还是凉凉 #include<cstdio> #include<cmath> #include<iostream> #in ...

  2. NOIP前的刷题记录

    因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数   组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...

随机推荐

  1. linux-Centos 7下mysql 5.7.9的rpm包安装

    操作系统:Centos 7.1 mysql数据库版本:mysql5.7.18 1.安装新版mysql之前,我们需要将系统自带的mariadb-lib卸载 [root@123 ~]# rpm -qa|g ...

  2. 768A Oath of the Night's Watch

    A. Oath of the Night's Watch time limit per test 2 seconds memory limit per test 256 megabytes input ...

  3. Nginx下SSL证书设置和反向代理

    上来就贴代码: server { listen ; server_name **.****.net; #填写绑定证书的域名 ssl on; ssl_certificate /opt/nginx-/co ...

  4. LUOGU P4408 [NOI2003]逃学的小孩(树的直径)

    题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽 ...

  5. POJ 2585.Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

  6. hadoop群集 启动

    ###注意:严格按照下面的步骤 .5启动zookeeper集群(分别在itcast04.itcast05.itcast06上启动zk) cd /itcast/zookeeper-/bin/ ./zkS ...

  7. ApplicationContextAware学习--存疑问题

    先看下ApplicationContextAware的源码:     package org.springframework.context; import org.springframework.b ...

  8. document.body和document.documentElement区别

    1.document.documentElement表示文档节点树的根节点,即<html> document.body是body节点 2. 页面具有 DTD,或者说指定了 DOCTYPE ...

  9. centos下安装visual studio code出现can't find libXss.so.1,出现这在类似怎么查找相关包

    在安装visual studio code时候.出现libXss.so.1被依赖,这个so文件要查看是属于那个包,通过此命令repoquery --nvr --whatprovides libXss. ...

  10. html自适应布局,@media screen,媒体查询

    html自适应布局,@media screen,媒体查询 自适应代码示例: <!doctype html> <html> <head> <meta chars ...