高考是不可能高考的 国家集训队作业题

高考是不可能高考的

Description

给出 N 个旗子,全部旗子摆在一条线上。
i个旗子可以被放在位置 xi yi 上.
LYD 认为两个旗子间的最小距离越大越好。
请你求出最大值。

Data Constraint

1 <=N<= 104 1 <=xi, yi <= 109

Solution

做过这题后便发现国家集训队的作业题其实也没那么难。
其实模型也挺裸的,就是 2 -SAT问题。
一个显然的解题方向,就是要先二分答案。
然后将所有的 xi yi 全部放在一条数轴上。
定义 xi 的对立点为 yi yi 的对立点为 xi
考虑对于一个点,如果选择数轴上的某个点 B ,那么若存在某个点A A B的距离小于二分的答案,那么 B 要向A对立点 连一条边,表示如果选择了 B ,就一定要选择A的对立点。
建出 2 -SAT模型后,跑一边 Tarjan 求强连通分量,若存在( xi , yi ), xi yi 在同一个强连通分量内,则说明这答案是不合法的,否则就是合法的。

但这样连边是 O (N2)的,边数也能达到 N2 级别,因而这种方法行不通。
我们发现只需判断两点是否在同一个连通块内,并不要求方案,因而 N2 连边可以说是多余的。
考虑用线段树,对于线段树上的每个区间往它的两个儿子连边。
对于每一个点,它连的点都在一段区间内,因而每一个点可以跟它对应的 log N <script type="math/tex" id="MathJax-Element-790">N</script>个区间连边,最后一样的方法判连通性即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值