jzoj5906
我們首先發現,每一條邊都至少走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的更多相关文章
- <JZOJ5906>传送门
emmm dpdpdp然鹅我考场上并想不到 还是凉凉 #include<cstdio> #include<cmath> #include<iostream> #in ...
- NOIP前的刷题记录
因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数 组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...
随机推荐
- linux-Centos 7下mysql 5.7.9的rpm包安装
操作系统:Centos 7.1 mysql数据库版本:mysql5.7.18 1.安装新版mysql之前,我们需要将系统自带的mariadb-lib卸载 [root@123 ~]# rpm -qa|g ...
- 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 ...
- Nginx下SSL证书设置和反向代理
上来就贴代码: server { listen ; server_name **.****.net; #填写绑定证书的域名 ssl on; ssl_certificate /opt/nginx-/co ...
- LUOGU P4408 [NOI2003]逃学的小孩(树的直径)
题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽 ...
- POJ 2585.Window Pains 拓扑排序
Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1888 Accepted: 944 Descr ...
- hadoop群集 启动
###注意:严格按照下面的步骤 .5启动zookeeper集群(分别在itcast04.itcast05.itcast06上启动zk) cd /itcast/zookeeper-/bin/ ./zkS ...
- ApplicationContextAware学习--存疑问题
先看下ApplicationContextAware的源码: package org.springframework.context; import org.springframework.b ...
- document.body和document.documentElement区别
1.document.documentElement表示文档节点树的根节点,即<html> document.body是body节点 2. 页面具有 DTD,或者说指定了 DOCTYPE ...
- centos下安装visual studio code出现can't find libXss.so.1,出现这在类似怎么查找相关包
在安装visual studio code时候.出现libXss.so.1被依赖,这个so文件要查看是属于那个包,通过此命令repoquery --nvr --whatprovides libXss. ...
- html自适应布局,@media screen,媒体查询
html自适应布局,@media screen,媒体查询 自适应代码示例: <!doctype html> <html> <head> <meta chars ...