【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 ...
随机推荐
- odoo学习之带出信息
# 输入客户带出它默认的发运方式和包装方式 def on_change_partner_id_return(self,cr,uid,ids,partner_id,context=None): resu ...
- 3.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——检查文件开始与结尾
检查文件两个互补的命令是head 和tail, 它们分别用于查看文件的开始(头部)和结束(尾部).head命令展示了文件的前10行.(Listing 11). ##Listing 11: 查看示例文件 ...
- (转)Putty server refused our key的三种原因和解决方法
原文 上一篇博文介绍了使用Putty免密码登录,我后面试了另一台虚拟机,结果putty显示错误server refused our key(在linux下则表现为仍需要输入密码),搜索了下,很多人都遇 ...
- 用JS制作一个信息管理平台(1)
首先,介绍一些需要用到的基本知识. [JSON] JSON是数据交互中,最常用的一种数据格式. 由于各种语言的语法都不相同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串. 传递之后 ...
- Linux下"负载均衡+高可用"集群的考虑点 以及 高可用方案说明(Keepalive/Heartbeat)
当下Linux运维技术越来越受到企业的关注和追捧, 在某些企业, 尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案.那么如何实施Llinux集群架构,才能既有效 ...
- Java代码操作properties文件(读取,新增/修改,删除)
项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...
- 补充照片:某基同学使用Bing词典
某基同学使用Bing词典的照片
- Spring整合SpringMVC
整合:把在springMVC配置文件中的spring提取出来整合为另一份配置文件 希望: 1).Spring的配置文件只是用来配置和业务逻辑有关的功能(数据源.事务控制.切面....) 2).Spri ...
- debug网页时小问题The source attachment does not contain the source for the file
第一次debug总是出现下图问题,提示我没加源码... The source attachment does not contain the source for the file ... 解决方法: ...
- JVM EXCEPTION_ACCESS_VIOLATION
## A fatal error has been detected by the Java Runtime Environment:## EXCEPTION_ACCESS_VIOLATION (0x ...