「JSOI2014」支线剧情2
「JSOI2014」支线剧情2
传送门
不难发现原图是一个以 \(1\) 为根的有根树,所以我们考虑树形 \(\text{DP}\)。
设 \(f_i\) 表示暴力地走完以 \(i\) 为根的子树的最小代价,那么 \(f_i\) 的计算就很显然了:
\]
\(s_i\) 表示以 \(i\) 为根的子树的叶子数。
我们再设一个 \(dp_i\) 表示在可以存档读档的条件下走完以 \(i\) 为根的子树的最小代价。
那么我们的转移就是枚举 \(i\) 的一个儿子用来存档或者不存档,然后计算 \(dp_i\) 即可。
参考代码:
#include <cstdio>
#define rg register
#define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout)
template < class T > inline T min(T a, T b) { return a < b ? a : b; }
template < class T > inline void read(T& s) {
    s = 0; int f = 0; char c = getchar();
    while ('0' > c || c > '9') f |= c == '-', c = getchar();
    while ('0' <= c && c <= '9') s = s * 10 + c - 48, c = getchar();
    s = f ? -s : s;
}
typedef long long LL;
const int _ = 1e6 + 5;
int tot, head[_]; struct Edge { int v, w, nxt; } edge[_ << 1];
inline void Add_edge(int u, int v, int w) { edge[++tot] = (Edge) { v, w, head[u] }, head[u] = tot; }
int n, num[_]; LL f[_], dp[_];
inline void dfs(int u, LL dis) {
    if (head[u] == 0) { num[u] = 1; return ; }
    LL sum = 0;
    for (rg int i = head[u]; i; i = edge[i].nxt) {
        int v = edge[i].v, w = edge[i].w;
        dfs(v, dis + w), num[u] += num[v], f[u] += f[v] + 1ll * w * num[v];
        sum += min(f[v] + 1ll * w * num[v], dp[v] + dis + w);
    }
    dp[u] = f[u];
    for (rg int i = head[u]; i; i = edge[i].nxt) {
        int v = edge[i].v, w = edge[i].w;
        dp[u] = min(dp[u], sum - min(f[v] + 1ll * w * num[v], dp[v] + dis + w) + dp[v] + w);
    }
}
int main() {
#ifndef ONLINE_JUDGE
    file("cpp");
#endif
    read(n);
    for (rg int k, x, y, i = 1; i <= n; ++i) {
        read(k);
        while (k--) read(x), read(y), Add_edge(i, x, y);
    }
    dfs(1, 0);
    printf("%lld\n", dp[1]);
    return 0;
}
												
											「JSOI2014」支线剧情2的更多相关文章
- 「AHOI2014/JSOI2014」支线剧情
		
「AHOI2014/JSOI2014」支线剧情 传送门 上下界网络流. 以 \(1\) 号节点为源点 \(s\) ,新建一个汇点 \(t\),如果 \(u\) 能到 \(v\),那么连边 \(u \t ...
 - 「JSOI2014」矩形并
		
「JSOI2014」矩形并 传送门 我们首先考虑怎么算这个期望比较好. 我们不难发现每一个矩形要和 \(n - 1\) 个矩形去交,而总共又有 \(n\) 个矩形,所以我们把矩形两两之间的交全部加起来 ...
 - 「JSOI2014」打兔子
		
「JSOI2014」打兔子 传送门 首先要特判 \(k \ge \lceil \frac{n}{2} \rceil\) 的情况,因为此时显然可以消灭所有的兔子,也就是再环上隔一个点打一枪. 但是我们又 ...
 - 「JSOI2014」电信网络
		
「JSOI2014」电信网络 传送门 一个点选了就必须选若干个点,最大化点权之和,显然最大权闭合子图问题. 一个点向它范围内所有点连边,直接跑最大权闭合子图即可. 参考代码: #include < ...
 - 「JSOI2014」学生选课
		
「JSOI2014」学生选课 传送门 看到这题首先可以二分. 考虑对于当前的 \(mid\) 如何 \(\text{check}\) 我们用 \(f_{i,j}\) 来表示 \(i\) 对 \(j\) ...
 - 「JSOI2014」歌剧表演
		
「JSOI2014」歌剧表演 传送门 没想到吧我半夜切的 这道题应该算是 \(\text{JSOI2014}\) 里面比较简单的吧... 考虑用集合关系来表示分辨关系,具体地说就是我们把所有演员分成若 ...
 - 「JSOI2014」强连通图
		
「JSOI2014」强连通图 传送门 第一问很显然就是最大的强连通分量的大小. 对于第二问,我们先把原图进行缩点,得到 \(\text{DAG}\) 后,统计出入度为零的点的个数和出度为零的点的个数, ...
 - 「JSOI2014」序列维护
		
「JSOI2014」序列维护 传送门 其实这题就是luogu的模板线段树2,之所以要发题解就是因为学到了一种比较NB的 \(\text{update}\) 的方式.(参见这题) 我们可以把修改操作统一 ...
 - [AHOI2014&&JSOI2014][bzoj3876] 支线剧情 [上下界费用流]
		
题面 传送门 思路 转化模型:给一张有向无环图,每次你可以选择一条路径走,花费的时间为路径上边权的总和,问要使所有边都被走至少一遍(可以重复),至少需要花费多久 走至少一遍,等价于覆盖这条边 也就是说 ...
 
随机推荐
- wamp使用时遇到的问题总结
			
1.相关网页无法访问? 解决方案:修改配置文件,将所有的Deny from all 改为Allow from all,再重启wamp 以下列举配置文件 local host无法访问 单击wamp图标, ...
 - Boxes and Candies
			
问题 G: Boxes and Candies 时间限制: 1 Sec 内存限制: 128 MB[提交] [状态] 题目描述 There are N boxes arranged in a row. ...
 - layuiAdmin pro v1.x 【单页版】开发者文档
			
layuiAdmin std v1.x [iframe版]开发者文档 题外 该文档适用于 layuiAdmin 专业版(单页面),阅读之前请务必确认是否与你使用的版本对应. 熟练掌握 layuiAdm ...
 - 搭建分布式hadoop环境的前期准备---需要检查的几个点
			
前期准备: jdkhostnamehostsdate安全机制firewallwindows 域名映射 具体的操作见下面 1.看看自己是否已经配置了别名了(linux别名的配置可以参考博文:自己cent ...
 - C语言中调用运行python程序
			
C语言中调用运行python程序: Python代码如下: 创建test.py. #!/usr/bin/python3 #test.py import sys x = ]) print x*x 注意: ...
 - git查漏补缺
			
1. commit提交注释规范 2. commit 注释没写完或写错了,在不用删除这条commit的情况下,如何更正注释信息 git commit -m '1' git commit --amend ...
 - C语言与汇编的嵌入式编程:main中模拟函数的调用(两数交换)
			
编写一个两数交换函数swap,具体代码如下: #include<stdio.h> void swap(int *p1,int *p2) { int temp; temp = *p1; *p ...
 - 极简的js点击组图切换效果
			
程序员进行前端开发时,时常要用到点击切换组图的动画效果,网上确实有很多此类插件,但是都很麻烦,乌糟糟无数代码,有那个看的时间,自己都能把功能写完了.在这里我提供一段极简的js点击组图切换效果代码,包含 ...
 - oracle 多表查询,请教个问题
			
首先,是有一个合同表,对应数据库表 lg_bill_of_lading_detail 简称 bold 有一个用户表 EMT_USER 简称 e 合同审批 后,合同表里 会有一个审核人AUDI ...
 - dp(武功秘籍)
			
众所周知,太吾绘卷是非常爱(niu)你(bi)的国产武侠游戏,里面有一个继承系统,当你死后可以在你的子孙中挑选一个继承人,用他的人物继续进行游戏.当你挑选继承人的时候一定会挑选能力最强,天赋最高的那一 ...