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 ...
随机推荐
- net下载文件方法汇总
//TransmitFile实现下载 protected void Button1_Click1(object sender, EventArgs e) { /* 微软为Response对象提供了一个 ...
- 使用System.Net.Mail发送邮件
引用命名空间: using System.Net.Mail; /// <summary> /// 发送HTML邮件,有抄送和密送 /// 需要在Web.config文件中的system.n ...
- paxos 分布一致性算法的一些资料
http://blog.csdn.net/russell_tao/article/details/7238783 技术牛人博客 三国背景来讲述分布一致性算法 此人还是NGINX的代码解析 <深入 ...
- part1:2-嵌入式系统简单概念
1.3个特点+1个性质:以应用为中心.软硬件可裁剪.对功能-体积-功耗等有严格要求:专用的计算机系统. 应用领域: 软硬件可裁剪,是什么结构让嵌入式系统具备了这样的特点? 嵌入式系统的体系结构:硬件: ...
- <td> 行高多层设置的问题
在一个table中,设置了class,并且对应的样式设置了td的高度时,在其嵌套的table中的td高度不能设置大于父table的td的高度. 只有一种方法可以设置,如下: <table wid ...
- 2018.09.28 bzoj3688: 折线统计(dp+树状数组)
传送门 简单树状数组优化dp. 注意到k很小提示我们搜(d)(d)(d)索(p)(p)(p). 先按第一维排序. 用f[i][j][0/1]f[i][j][0/1]f[i][j][0/1]表示第i个点 ...
- 2018.09.17 atcoder Tak and Hotels(贪心+分块)
传送门 一道有意思的题. 一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的. 但是贪心思想一定是对的,每 ...
- 优秀前端工程师必备:" checkbox & radio--单钩 & 多钩 "大比较:你是♂||♀ , 还是 ♂&♀
1 单选: type="radio" 需求: 男女input只能选择一个 <input type="radio" name="sex" ...
- RESTful架构概念
本文转载自:http://www.ruanyifeng.com/blog/2011/09/restful.html 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软 ...
- 7系列GTX中的疑惑
1.PCOMMA与MCOMMA指什么? PCOMMA是指RD-部分的数据,MCOMMA是指RD+部分的数据. 2.risk信号作用? risk信号来指示有效的K码. 如果不选择用8b10b来编码,是需 ...