【POI每日题解 #8】DYN-Dynamite
你问蒟蒻为什么一天写两篇每日题解?
难道每日坚果你不能一天吃两包吗?
哇…这道题第一反应就是二分答案【太明显了
枚举答案 就那个“关键节点到这些点中距离的最小值的最大值”【蒟蒻读了好几遍……
若枚举到mid 则判定答案为mid时,覆盖所有特殊点的最少点数能否不超过m
嗯 这很点分治
对于一个子树 我们要处理到它里面没有没被覆盖的点
或者有到该子树根距离小于mid的【它可以放在以后解决
那什么时候要选点呢?
自然是上面两个条件都不满足的时候
也就是离子树根最远的未被覆盖特殊点到子树根的距离等于mid 【注意边权为一,大于就来不及了
所以对每棵子树存储它未被处理的最远特殊点的距离
注意到一个节点连接的两棵子树可以互相覆盖
并且覆盖所经过的路径必然经过当前节点
因此 记录到每个根节点距离最近的已选点的距离
至此 维护两个值 点分治得以完成
蒟蒻一开始没想到能A这道题 随便一写一交【当然这习惯很不好
就60了【facepalm 稍微debug下就A了……
但以后还是不要这么干…… 以此为戒
注意 对于1(根节点) 要进行特判
因为此时按点分治 到根节点距离小于mid的特殊点仍被保留
void dfs(int x, int fa){
d1[x] = sp[x] ? : -N; d2[x] = N;
for(int i = head[x]; i != -; i = edge[i].next){
int vv = edge[i].v;
if(vv == fa) continue;
dfs(vv, x);
if(d1[vv] != -N) d1[x] = max(d1[x], d1[vv] + );
d2[x] = min(d2[x], d2[vv] + );
}
if(d1[x] + d2[x] <= mid) d1[x] = -N;//!!!
if(d1[x] == mid){
tot++; d1[x] = -N; d2[x] = ;
}
if(sp[x] && d2[x] > mid)
d1[x] = max(d1[x], ); //!!!
}
inline bool check(){
tot = ;
dfs(, );
if(d1[] + d2[] > mid) tot++;//!!!
return tot <= m;
}
check
【POI每日题解 #8】DYN-Dynamite的更多相关文章
- 【POI每日题解 #7】TES-Intelligence Test
题目链接 这道题第一眼看去类比BANK-Cash Dispenser 不过1e6 * 1e6 = 1e12 分分钟MLE啊 想到优化 就yy到一种近似主席树的做法 来维护类似BANK的一堆序列 开 ...
- 【POI每日题解 #9】SKA-Piggy Banks
题目链接 题意: 有一棵环套树 求最少从多少个节点出发能沿边走过整棵树 环套树 并查集求联通块 有几块就砸几个 太简单不发代码了 不过某大佬的环套树找环dfs让我研究了好久… 贴一下以Orz #inc ...
- 【POI每日题解 #6】KRA-The Disks
题目链接 : [POI2006]KRA-The Disks 好有既视感啊... 注意一下输入输出 输入是从上到下输入箱子的宽度 输出是最上面的积木停在哪一层 即 箱子高度 - 积木高度 + 1 在初始 ...
- 【POI每日题解 #5】 DWU-Double-row
题目链接 [POI2005]DWU-Double-row wwwww 之前写了半小时 一卡机 没啦QAQ 简单说一下吧 [吐血ing 这道题长得好二分图啊 所以本能地连边 一种是A边 连可交换的数对 ...
- 【POI 每日题解 #4】 [POI2008]MAF-Mafia
[POI2008]MAF-Mafia 很容易看出是拓扑 但不容易想出来怎么做[可能是我太菜 首先 入度为零的人是肯定死不了的 接着 我们分成环和链分析 对于一个链 最多的情况就是顺着一个个开枪 最后剩 ...
- 每日题解: 两数之和 & 有效的括号
- [POI 2008&洛谷P3467]PLA-Postering 题解(单调栈)
[POI 2008&洛谷P3467]PLA-Postering Description Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...
- POI题解整合
我也不知道为啥我就想把POI的题全都放到一篇blog里写完. POI 2005 SAM-Toy Cars 贪心,每次选下次出现最晚的. POI 2006 KRA-The Disks 箱子位置单调,所以 ...
- 每日温度(LeetCode Medium难度算法题)题解
LeetCode 题号739中等难度 每日温度 题目描述: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 ...
随机推荐
- 方差(variance)、标准差(Standard Deviation)、均方差、均方根值(RMS)、均方误差(MSE)、均方根误差(RMSE)
方差(variance).标准差(Standard Deviation).均方差.均方根值(RMS).均方误差(MSE).均方根误差(RMSE) 2017年10月08日 11:18:54 cqfdcw ...
- 自建mvc5项目里几个类图
AccoutController.cs AccountViewModels.cs IdentityModel.cs
- Apache与Nginx
Apache与Nginx的优缺点比较 --- 1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的 ...
- 【小程序】页面无法更新tabbar角标属性时
在小程序论坛上找答案,一同问了,截图如下
- npm install报错 npm ERR! enoent ENOENT: no such file or directory
在npm之后出现如下错误: $ npm install npm WARN checkPermissions Missing write access to /Users/lucas/code/js/v ...
- 学习ML.NET(3): 导入数据集
机器学习算法需要作用于数据,用来训练算法模型.数据集通常是以纯文本文件存储的表格数据,文件的每一行是一条数据记录,每条记录由多列组成,列之间用分隔符(一般是逗号,)分开,例如前面用到过的鸢尾花数据集. ...
- springboot 读取 yml 配置的几种方式
前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...
- python升级后带来的几个小问题
1)python升级带来的yum异常:File "/usr/bin/yum", line 30 原因:这是因为yum采用Python作为命令解释器,这可以从/usr/bin/yum ...
- WCF的练习。
最近稍微又学习了下WCF,并做了一些联系.觉得很有收获,把东西都上传到git上了.然后在这里做一个链接导航. 无废话WCF入门教程一[什么是WCF] 无废话WCF入门教程二[WCF应用的通信过程] 无 ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace-树状数组-区间修改,单点查询
赛后和队友讨论了一波,感谢无敌的队友给我细心的讲题 先埋坑 #include<iostream> #include<string.h> #include<algorith ...