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 ...
随机推荐
- PythonQt在windows下的编译
笔者最近在做Qt方面的开发工作,然后需要用到脚本程序对程序内部进行扩展,就很自然的想到了Python,度娘一下发现了一款神器,也就是今天给大家介绍的主角:PythonQt 今天首先给大家介绍下Pyth ...
- spring mvc leaning
解读 web.xml文件 <servlet>-----配置前端控制器的servlet <servlet-name>springMVC</servlet-name> ...
- Java数据结构和算法(五)二叉排序树(BST)
Java数据结构和算法(五)二叉排序树(BST) 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 二叉排序树(Binary S ...
- maven web 项目 打入 jar 包 , 和编译入 java 文件到 web-inf 下
<outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory> 可以把 类文件编译到 web-inf 下 ...
- W-D-S-UART编程
1.协议原理 2.原理框图 3.开发板底板与核心板图 4.开始配置寄存器 a).使相应I/O引脚配置为UART引脚 b).配置数据发送模式 c).设置为中断或查询模式 d).使能串口缓存 e).流量控 ...
- list集合如何对里面的元素进行排序
Collections 是集合的公共类,提供各种工具,其中提供了排序方法. Collections.sort(),方法两个参数,1,要排序的集合,2.排序方式 下面是匿名内部类,实现了排序借口,你也可 ...
- 2018.09.15 hdu1599find the mincost route(floyd求最小环)
传送门 floyd求最小环的板子题目. 就是枚举两个相邻的点求最小环就行了. 代码: #include<bits/stdc++.h> #define inf 0x3f3f3f3f3f3f ...
- Django入门指南-第7章:模板引擎设置(完结)
http://127.0.0.1:8000/ <!--templates/home.html--> <!DOCTYPE html> <html> <head& ...
- 【Unity】2.4 层次视图(Hierarchy)
分类:Unity.C#.VS2015 创建日期:2016-03-29 一.简介 层级视图 (Hierarchy) 包含当前场景中的每个游戏对象 (GameObject).有些是三维模型等资源文件的直接 ...
- GitHub 安装配置
1:到 Github 注册 页面中注册,填写用户名.邮箱和密码 选择免费服务 步骤三可以根据自身喜好勾选或者直接跳过 2.1.2 创建远程仓库 创建完账号后,可以开始创建仓库 但是这里我们还没有验证邮 ...