「JLOI / SHOI2016」侦查守卫

树上的动态规划

对于一棵子树内的守卫,也可以覆盖子树外的节点,需要加一维来记录子树与外界的关系。

g[u][j] 表示覆盖完子树并且还可以覆盖离子树根节点距离不大于j的点的最小花费

f[u][j] 表示子树内只保证距离子树根节点距离不小于j的节点被覆盖的最小花费

讨论树的子树对于树的关系来转移:

u是v的父亲,则

g[u][j]=min(g[u][j]+f[v][j],g[v][j+1]+f[u][j+1])

f[u][j] = Σf[v][j-1]

g[u][j] = min(g[u][j], g[u][j+1])

f[u][j] = min(f[u][j], f[u][j-1])

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3
 4 const int N = 5e5 + 5, M = 25;
 5
 6 int n, d, cnt, first[N], w[N], f[N][M], g[N][M], m, inf = 1e9;
 7 bool vis[N];
 8 struct Edge {
 9     int to, next;
10 } e[N<<1];
11
12 void dfs(int u, int fa) {
13     if(vis[u]) f[u][0] = g[u][0] = w[u];
14     for(int i = 1; i <= d; i++) g[u][i] = w[u];
15     g[u][d + 1] = inf;
16     for(int i = first[u]; i != -1; i = e[i].next) {
17         int v = e[i].to;
18         if(v == fa) continue;
19         dfs(v, u);
20         for(int j = 0; j <= d; j++)
21            g[u][j] = min(g[u][j] + f[v][j], g[v][j + 1] + f[u][j + 1]);
22         for(int j = d; j >= 0; j--) g[u][j] = min(g[u][j], g[u][j + 1]);
23         f[u][0] = g[u][0];
24         for(int j = 1; j <= d; j++)
25            f[u][j] += f[v][j - 1];
26         for(int j = 1; j <= d; j++)
27            f[u][j] = min(f[u][j], f[u][j - 1]);
28     }
29 }
30
31 void add(int u, int v) {
32     e[cnt] = (Edge) {v, first[u]};
33     first[u] = cnt++;
34 }
35
36 int Read() {
37     int f = 1, res = 0;
38     char ch = getchar();
39     while(ch > ‘9‘ || ch < ‘0‘) {
40         if(ch == ‘-‘) f =- 1;
41         ch = getchar();
42     }
43     while(ch >= ‘0‘ && ch <= ‘9‘) {
44         res = res*10 + ch - ‘0‘;
45         ch = getchar();
46     }
47     return res*f;
48 }
49
50 int main() {
51     n = Read(); d = Read();
52     memset(first, -1, sizeof(first));
53     for(int i = 1; i <= n; i++)
54        w[i] = Read();
55     m = Read();
56     for(int i = 1; i <= m; i++)
57        vis[Read()] = 1;
58     for(int i = 1, u, v; i < n; i++) {
59         u = Read(); v = Read();
60         add(u, v); add(v, u);
61     }
62     dfs(1, 0);
63     printf("%d\n", f[1][0]);
64     return 0;
65 } 

原文地址:https://www.cnblogs.com/ympc2005/p/12307186.html

时间: 2025-01-01 11:53:34

「JLOI / SHOI2016」侦查守卫的相关文章

怎样将「插件化」接入到项目之中?

本期移动开发精英社群讨论的主题是「插件化」,上网查了一下,发现一篇 CSDN 博主写的文章<Android 使用动态载入框架DL进行插件化开发>.此处引用原作者的话: 随着应用的不断迭代,应用的体积不断增大,项目越来越臃肿,冗余添加.项目新功能的加入,无法确定与用户匹配性,发生严重异常往往牵一发而动全身,仅仅能紧急公布补丁版本号,强制用户进行更新.结果频繁的更新.反而easy减少用户使用黏性,或者是公司业务的不断发展,同系的应用越来越多,传统方式须要通过用户量最大的主项目进行引导下载并安装.

「C语言」常量和变量的表示及应用

先发布,还在修改完善中.. 在程序运行中,其值不能改变的量成为常量.在基本数据类型中,常量可分为整型常量.实型常量.符号常量和字符型常量(包括字符常量和字符串常量),现分别介绍如下: 整型常量 即整常数,由一个或多个数字组成,可以带正负号 C语言中整型常量可用十进制.八进制和十六进制3种形式表示 十进制整数:由0~9数字组成,不能以0开始,没有前缀 八进制整数:以0为前缀,其后由0~7的数字组成,没有小数部分 十六进制整数:以0x或0X开头,其后由0~9的数字和a~f(或A~F字母组成) 另外长

Chrome 扩展 Stylish :给不喜欢某个网站一键「换肤」

原文地址:http://whosmall.com/?post=419 本文标签: Chrome扩展 Chrome浏览器 Chrome插件 Chrome扩展Stylish Stylish是什么 Stylish 是什么? 开门见山,Stylish 的作用是,它可以把百度首页变成这样: 它还能把知乎「拍扁」,让微博网页版变得简洁无比,让 Feedly 用上Material Design-- 这个神奇的 Stylish实际上是一个浏览器插件,适用于 Chrome,Firefox,Opera 以及 Saf

3D高科技投影 麦可「复活登台」幕后

美国告示牌音乐颁奖典礼,日前在赌城盛大举行,主办单位利用高科技投影技术,让麦可杰克森「复活」登台表演,3D全像投影,加上影片与真人舞群无缝接轨,高科技让过世的大明星彷佛活了过来. 流行乐天王麦可杰克森死而复生,过世将近5年的他,又现身在今年美国告示牌音乐颁奖典礼上,金光闪闪现身舞台中央,麦可杰克森回来了,再现招牌的动感舞步,流露巨星风采,主办单位利用3D全像摄影技术,秘密制作了半年多,把他带回到世人眼前. 特效专家:「观众在告示牌典礼上看到的是,麦可的头部数字影像,连接到一名演员身上,我们实时捕

bzoj4557【JZOI2016】侦查守卫

4557: [JLoi2016]侦察守卫 Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 114  Solved: 70 [Submit][Status][Discuss] Description 小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的 .换句话说,游戏的地图是一棵有N个节点的树.游戏中有一种道具叫做侦查守卫,当一名玩家在一个点上放置侦 查守卫后,它可以监视这个点以及与这个点的距

「Maven Tips」(一)自动更新jar包

maven中手动去更新jar包,是一件比较繁琐麻烦的事情,使用Range Dependency则可以省去这一步骤. 部分jar包可能会自动升级到beat版本! 官方说明文档:Dependency Version Ranges Range Meaning (,1.0] version ≤ 1.0 1.0 固定1.0版本 [1.0]   [1.2,1.3] 1.2 ≤ version ≤ 1.3 [1.0,2.0) 1.0 ≤ version ≤ 2.0 [1.5,) version ≥ 1.5 (

Linux 小知识翻译 - 「桌面环境」

这次聊聊桌面环境. 上次聊了 X Window System 相关的内容,虽然令人意外,但X Window System 和桌面环境不是一回事.请大家稍微考虑一下. X Window System 是指提供GUI环境的软件或者协议.与之相对,「桌面环境」是指工具栏,图标,窗口管理器,桌面管理器等等各式各样软件组合起来的GUI软件包. 换句话说,就是「使用桌面所必需的软件的集合」. 有名的桌面环境有「GNOME」和「KDE」.最近,很多Linux的发行版并不关心使用的桌面环境是「GNOME」还是「

王堅:「資料」改變了商業模式,運算能力決定企業的競爭力

阿里巴巴集團技術委員會主席.阿里巴巴的雲端建立者,王堅博士於上週來到台灣,出席了阿里巴巴針對台灣創業者舉辦的一場大會時,發表了他對於雲端運算.大數據以及人工智慧的一些看法以及建議. 由於是針對創業者的場合,王堅針對現在創業者最注意的四個趨勢:網際網路.大數據.雲端運算和人工智慧提出了建議.王堅表示,當初阿里巴巴談電子商務的時候,並不是大家想的簡單的把商店搬到網路上如此而已,而是從「相信網際網路是未來商業的基礎設施」這個基本觀念出發.而現在,你可以看到當初有這樣想法的網路公司,現在都已經成長為科技

AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ

#2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f #define maxn 2000005 int n,m,s,t,que[maxn],deep[maxn],toth,totl,F[max