bzoj4557【JLOI2016】侦查守卫
这道题对于我来说并不是特别简单,还可以。
更新一下blog
树形DP
f[i][j]表示i的子树中,最高覆盖到i向下第j层的最小花费。
g[i][j]表示i的子树全部覆盖,还能向上覆盖j层的最小花费。
这样还是有许多细节的。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std; const int NN=,INF=1e9+,DD=; int n,m,d;
int w[NN],g[NN][DD]={},f[NN][DD]={};
int cnt,head[NN],next[NN*],rea[NN*];
bool mark[NN]; void add(int u,int v)
{
cnt++;
next[cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
}
void dfs(int u,int fa)
{
if (mark[u]) f[u][]=g[u][]=w[u];
for (int i=;i<=d;i++)
g[u][i]=w[u];
g[u][d+]=INF;
for (int i=head[u];i!=-;i=next[i])
{
int v=rea[i];
if (v==fa) continue;
dfs(v,u);
for (int j=d;j>=;j--)
g[u][j]=min(f[v][j]+g[u][j],f[u][j+]+g[v][j+]);
for (int j=d;j>=;j--)
g[u][j]=min(g[u][j],g[u][j+]);
f[u][]=g[u][];
for (int j=;j<=d;j++)
f[u][j]+=f[v][j-];
for (int j=;j<=d;j++)
f[u][j]=min(f[u][j-],f[u][j]);
}
}
int main()
{
int x,y,z;
memset(head,-,sizeof(head));
scanf("%d%d",&n,&d);
for (int i=;i<=n;i++)
scanf("%d",&w[i]);
scanf("%d",&m);
for (int i=;i<=m;i++)
{
scanf("%d",&x);
mark[x]=true;
}
for (int i=;i<n;i++)
{
scanf("%d%d",&x,&y);
add(x,y),add(y,x);
}
dfs(,);
printf("%d",f[][]);
}
bzoj4557【JLOI2016】侦查守卫的更多相关文章
- [BZOJ4557][JLOI2016]侦查守卫
4557: [JLoi2016]侦察守卫 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 297 Solved: 200[Submit][Status ...
- JLOI2016 侦查守卫
侦查守卫 小R和B神正在玩一款游戏.这款游戏的地图由 N 个点和 N-1 条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是一棵有 N 个节点的树. 游戏中有一种道具叫做侦查守 ...
- BZOJ 4557 JLOI2016 侦查守卫 树形dp
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4557 题意概述: 给出一棵树,每个点付出代价w[i]可以控制距离和它不超过d的点,现在给 ...
- BZOJ4557 JLoi2016 侦察守卫 【树形DP】*
BZOJ4557 JLoi2016 侦察守卫 Description 小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是 ...
- BZOJ 4557 (JLOI 2016) 侦查守卫
4557: [JLoi2016]侦察守卫 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 493 Solved: 342 [Submit][Status ...
- loj #2024. 「JLOI / SHOI2016」侦查守卫
#2024. 「JLOI / SHOI2016」侦查守卫 题目描述 小 R 和 B 神正在玩一款游戏.这款游戏的地图由 nnn 个点和 n−1n - 1n−1 条无向边组成,每条无向边连接两个点, ...
- bzoj4557侦查守卫
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4557 树形DP.和“河流”有点像,也有一个类似“承诺”的东西. 就是用 f 表示当前节点向下 ...
- [BZOJ4557][JLOI2016]侦察守卫(树形DP)
首先可以确定是树形DP,但这里存在跨子树的信息传递问题,这里就需要“借”的思想. f[i][j]表示i子树内所有点都被覆盖到,且i以外j层内的点都能被覆盖到 的方案数. g[i][j]表示i子树内离i ...
- BZOJ4557 JLOI2016侦察守卫(树形dp)
下称放置守卫的点为监控点.设f[i][j]为i子树中深度最大的未被监视点与i的距离不超过j时的最小代价,g[i][j]为i子树中距离i最近的监控点与i的距离不超过j且i子树内点全部被监视时的最小代价. ...
随机推荐
- 后端路由项目由 gulp 改为 webpack 的踩坑实录
前言 公司有个后端路由的项目是用 gulp 作为前端自动化构建工具,最近学习了一下 webpack,深感其强大,一狠心将其改成了 webpack 构建,以下是踩坑实录. gulp 先来说说原来的架构. ...
- CGI + FastCGI(PHP-FPM)联系和区别的图解 + 注释
一.背景 参考了几篇文章,总结成图解 + 注释方便以后查阅. 参考资料: 1.https://www.zhihu.com/question/19582041 2.https://segmentfaul ...
- Spring事务管理(一)
对于Spring相信很多做web开发的小活动一定不陌生,Spring中我们经常谈到的就是IOC和AOP,但是对于Spring的事务管理,相信大家一定也很感兴趣,今天我们就探讨一下Spring中的事务管 ...
- javascript中用setAttribute给元素添加colspan属性无效
先附上代码 var tr=document.createElement('TR'); var td=document.createElement('TD'); td.setAttribute('col ...
- test文件伪装
该文件属于伪装图片类型.图片另存后把后缀改为rar将看到txt文件. 利用了 cmd cp /b 命令 命令格式:copy /b 文件1+文件2+......文件N 合并后的文件名<br&g ...
- 201521123088《java程序设计》第四次总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.11.2 使用常规方法总结其他上课内容 1.多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性. ...
- 201521123017 《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 201521123057 《Java程序设计》第2周学习总结
1. 本章学习总结 本周Java教学主要围绕Java的基本语法展开.在本周的学习中,我了解到了: -Integer的取值范围 -if...else条件式,switch条件式,while循环,break ...
- Java课程设计——学生信息系统(团队)
团队名称.团队成员介绍 1.1 团队名称 1.2 团队成员 高可心 网络1514 201521123097 组长 黄滢滢 网络1514 201521123095 组员 2.项目git地址 http:/ ...
- 201521123033《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...