【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 ...
随机推荐
- BZOJ 2810 [Apio2012]kunai
Orz Starria 现在看来,也不是很难,能做...就是不能写 可以想到维护每个苦无扫过的矩形,然后做矩形面积并即可. 然后发现自己只会$n^2$的处理方法... 想了好久之后问了一发 Starr ...
- Topshelf的Ioc实现
在前面使用Topshelf的文章里,我们的工作类TownCrier使用的是无参数的构造函数,满足测试的目的.在实际的开发过程中,我们常常需要使用带有参数的构造函数,就不可避免的使用Ioc的技术.在这里 ...
- Zookeeper-基本概念
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务.它是一个典型的分布式数据一致性的解决方案,分布式应用可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理 ...
- C#_Math函数总结
Math.abs() 计算绝对值. Math.acos() 计算反余弦值. Math.asin() 计算反正弦值. Math.atan() 计算反正切值. Math.atan2() 计算从x 坐标轴到 ...
- Beta版本发布报告
项目名称 学霸系统写手机客户端 项目版本 Beta版本 负责人 北京航空航天大学计算机学院 hots团队 联系方式 http://www.cnblogs.com/hotsbuaa/ 要求发布日期 20 ...
- WebAPI实例--第一个API
今天终于做了第一个任务,学习API之后的第一个实例.销售设置开发API. 第一.层次结构 1.API各层 项目结构主要有五层,分别为API.BizModel.Data.DBModel.Logic. 2 ...
- Java提高篇(1)封装
三大特性之---封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能 ...
- 【评分】Alpha阶段
[评分]Alpha阶段 总结 按时交 - 有分 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 倒扣本次作业分数 请大家回忆一下第一次作业的总结:http://www.cnblogs.c ...
- 每天学习SQL
SELECT table_name FROM information_schema.tables WHERE table_schema='survey170227_main' AND table_na ...
- Maven修改默认JDK
Maven修改默认JDK 问题: 1.创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本. 2.每次右键项目名-maven->update project 时候 ...