解题:JLOI 2016 侦查守卫
经典的$cov-unc$树形dp(这词是你自己造的吧=。=)
设$cov[i][j]$表示覆盖完$i$的子树后至少向外再覆盖$j$层的最小代价,$unc[i][j]$表示$i$的子树中还剩下至少$j$层没有覆盖时的最小代价,然后是两个数组的抵消转移什么的
1.边界:对于每个需要覆盖的节点$i$,$unc[i][0]=cov[i][0]=cost_i$,对于不需要覆盖的节点$unc[i][0]=cov[i][0]=0$
而对于每个点$i$,又都有$unc[i][j]=0,cov[i][j]=cost_i(j∈N^*\&\&j<=d)$
2.$cov$的转移
对于每个距离$j$,显然有$cov[i][j]+=unc[goal[i]][j]$(覆盖它当前这个子树)
然后对于距离小于$d$的情况有$cov[i][j]=min(cov[i][j],unc[i][j+1]+cov[goal[i]][j+1])$(子树向外覆盖)
还有我们定义的是“至少”:$cov[i][j]=min(cov[i][j],cov[i][j+1])$
3.$unc$的转移
显然的,有$unc[i][0]=cov[i][0]$
子树的第$i-1$层被覆盖则自己的第$i$层被覆盖,同时也是注意定义里的“最少”:$unc[i][j]=min(unc[i][j]+unc[goal[i]][j-1],unc[i][j-1]$
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int N=,K=;
- int p[N],noww[*N],goal[*N];
- int cst[N],imp[N],unc[N][K],cov[N][K];
- int n,d,m,t1,t2,cnt,ans=0x3f3f3f3f;
- void link(int f,int t)
- {
- noww[++cnt]=p[f];
- goal[cnt]=t,p[f]=cnt;
- }
- void DFS(int nde,int fth)
- {
- if(imp[nde]) unc[nde][]=cov[nde][]=cst[nde];
- for(int i=;i<=d;i++) cov[nde][i]=cst[nde];
- for(int i=p[nde];i;i=noww[i])
- if(goal[i]!=fth)
- {
- DFS(goal[i],nde);
- for(int j=d;~j;j--)
- {
- cov[nde][j]+=unc[goal[i]][j];
- if(j<d)
- {
- cov[nde][j]=min(cov[nde][j],cov[nde][j+]);
- cov[nde][j]=min(cov[nde][j],cov[goal[i]][j+]+unc[nde][j+]);
- }
- }
- unc[nde][]=cov[nde][];
- for(int j=;j<=d;j++)
- unc[nde][j]=min(unc[nde][j]+unc[goal[i]][j-],unc[nde][j-]);
- }
- }
- int main ()
- {
- scanf("%d%d",&n,&d);
- for(int i=;i<=n;i++)
- scanf("%d",&cst[i]);
- scanf("%d",&m);
- for(int i=;i<=m;i++)
- scanf("%d",&t1),imp[t1]=true;
- for(int i=;i<n;i++)
- {
- scanf("%d%d",&t1,&t2);
- link(t1,t2),link(t2,t1);
- }
- DFS(,);
- for(int i=;i<=d;i++)
- ans=min(ans,cov[][i]);
- printf("%d",ans);
- return ;
- }
解题:JLOI 2016 侦查守卫的更多相关文章
- 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][JLOI2016]侦查守卫
4557: [JLoi2016]侦察守卫 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 297 Solved: 200[Submit][Status ...
- JLOI2016 侦查守卫
侦查守卫 小R和B神正在玩一款游戏.这款游戏的地图由 N 个点和 N-1 条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是一棵有 N 个节点的树. 游戏中有一种道具叫做侦查守 ...
- 【LOJ】#2024. 「JLOI / SHOI2016」侦查守卫
题解 童年的回忆! 想当初,这是我考的第一次省选,我当时初二,我什么都不会,然后看着这个东西,是不是能用我一个月前才会的求lca,光这个lca我就调了一个多小时= =,然后整场五个小时,我觉得其他题不 ...
- loj2024「JLOI / SHOI2016」侦查守卫
too hard #include <iostream> #include <cstdio> using namespace std; int n, d, m, uu, vv, ...
- 【BZOJ 4561】【JLOI 2016】圆的异或并
http://www.lydsy.com/JudgeOnline/problem.php?id=4561 一开始并不会做,后来看题解看懂了. 看懂了之后还是错了好几次,数组大小手残开小了. 圆的包含并 ...
- BZOJ 4557 侦查守卫
好迷的树形dp... #include<iostream> #include<cstdio> #include<cstring> #include<algor ...
- 计数方法(扫描线):JLOI 2016 圆的异或并
Description 在平面直角坐标系中给定N个圆.已知这些圆两两没有交点,即两圆的关系只存在相离和包含.求这些圆的异或面 积并.异或面积并为:当一片区域在奇数个圆内则计算其面积,当一片区域在偶数个 ...
随机推荐
- Java普通编程和Web网络编程准备工作
一.工具下载 链接:https://pan.baidu.com/s/1geOdq3h 密码:pzl5 二.Java普通编程 解压下载的资料,并按readme.txt安装jdk和Eclipse. 三.J ...
- Google TensorFlow for GPU安装、配置大坑
Google TensorFlow for GPU安装.配置大坑 从本周一开始(12.05),共4天半的时间,终于折腾好Google TensorFlow for GPU版本,其间跳坑无数,摔得遍体鳞 ...
- Unity Lighting - Reflections 反射(六)
Reflections 反射 Reflection Source 反射源 By default, objects in a scene are rendered using Unity’s ‘St ...
- 《图解 HTTP 》阅读 —— 第五章
第5章 与HTTP协作的web服务器 一台服务器可以托管多个域名. 在相同的IP地址下,虚拟主机可以寄存多个不同主机名和域名的网站,所以在发送HTTP请求时,必须在Host首部内指定完整的主机名和域名 ...
- JAVA学习笔记--字符串概述
一.String类 String类代表字符串,是由字符构成的一个序列.创建String对象的方法很简单,有以下几种: 1)用new来创建: String s1 = new String("m ...
- SQL连接的方法
1.创建连接字符串 string con = "Data Source=127.0.0.1;Initial Catalog=dingdan;Integrated Security=True& ...
- 福大软工1816:Beta总结
第三视角Beta答辩总结 博客链接以及团队信息 组长博客链接 成员信息(按拼音排序) 姓名 学号 备注 张扬 031602345 组长 陈加伟 031602204 郭俊彦 031602213 洪泽波 ...
- 搜索引擎Elasticsearch,了解一下?
ElasticSearch介绍 ElasticSearch是一个全文搜索服务器,也可以作为NoSql数据库,存储任意格式的文档和数据,同时可以做大数据的分析.ElasticSearch具有以下特点: ...
- 5th 各组作品alpha发布体会
1. 俄罗斯方块 武志远 可以进行游戏,界面很友好,游戏运行也很流畅,并找到两名同学现场体验,游戏完成度很好. 2. 连连看游戏 张金生 可以进行游戏,实现了背景音乐播放等附加功能,界面清晰 ...
- Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt768
转自:http://blog.csdn.net/droidphone/article/details/8434768 Multi-touch (MT) Protocol --------------- ...