
【算法】扫描线
文章平均质量分 76
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ2658】【ZJOI2012】小蓝的好友(mrx)
【题目链接】点击打开链接【思路要点】求解不含资源点的矩形个数,用总共的矩形个数减之,得到答案。考虑扫描线,从上至下枚举矩形的下边界,记每一个横坐标\(x\)的资源点最近一次出现在\((x,Depth_x)\)处。维护一棵笛卡尔树(Treap),使得父节点的\(Depth\)始终大于子节点的\(Depth\),记每个点的子树大小为\(Size_x\)。此时,有\(Ans=\sum_{i=1}^{C}...原创 2018-02-25 14:12:23 · 362 阅读 · 0 评论 -
【校内训练2019-05-22】预言
【思路要点】首先用 HallHallHall 定理 +++ 线段树判断是否有解。若有解,考虑从前到后构造字典序最小的解。由于在 pospospos 处填入一个数只会影响左端点为 pospospos 的区间,可以二分出填入数字可能的最靠右的右端点 ritritrit ,填入数字的右端点需要在区间 [pos,rit][pos,rit][pos,rit] 中。再用一棵线段树维护右端点在该区间...原创 2019-05-24 12:25:45 · 284 阅读 · 0 评论 -
【CodeForces704E】Iron Man
【题目链接】点击打开链接【思路要点】考虑链上做法,每个人的坐标是一个关于时间的一次函数。注意到当且仅当两人相碰,两人位置的相对顺序会发生改变,换言之,在两人相碰之前,所有人位置的相对顺序不变。排序所有人出现,消失的事件,用平衡树维护所有人的相对位置即可。回到原题,对原树进行树链剖分,对每条重链和轻边都运行链上做法即可。时间复杂度 O(N+MLog2N)O(N+MLog^2...原创 2019-04-12 15:33:11 · 514 阅读 · 0 评论 -
【CodeForces645G】Armistice Area Apportionment
【题目链接】点击打开链接【思路要点】考虑找到使得 ∣PX−QX∣|PX-QX|∣PX−QX∣ 最小的 XXX , XXX 应为 PPP 关于 lll 的对称点 P′P'P′ 与 QQQ 所连直线与 lll 的交点,若两直线平行,则 XXX 可取无穷远处的一点。此时 ∣PX−QX∣=P′Q|PX-QX|=P'Q∣PX−QX∣=P′Q ,因此原问...原创 2019-04-12 15:33:18 · 355 阅读 · 0 评论 -
【CodeForces1139F】Dish Shopping
【题目链接】点击打开链接【思路要点】将一个人 (inc,pref)(inc,pref)(inc,pref) 看做平面上一点 (x,y)(x,y)(x,y) ,一件物品即为对于一个对称轴与 XXX 轴平行的等腰三角形的 +1+1+1 操作。考虑扫描线,在 x=px=px=p 处加入一对直线,并在 x=s+1x=s+1x=s+1 处删除它们,我们需要在这个过程中支持询问某一点在多少...原创 2019-04-05 14:30:35 · 412 阅读 · 0 评论 -
【LOJ6411】「ICPC World Finals 2018」三角形
【题目链接】点击打开链接【思路要点】不失一般性地,我们考虑计算倒三角的个数。考虑枚举其靠下的顶点 (x,y)(x,y)(x,y) ,记其向左斜向上的边最长长度为 lx,yl_{x,y}lx,y ,向右斜向上的边最长长度为 rx,yr_{x,y}rx,y ,那么该顶点处至多产生 Min{lx,y,rx,y}Min\{l_{x,y},r_{x,y}\}Min{lx,y,rx,...原创 2019-03-21 18:19:06 · 379 阅读 · 0 评论 -
【CodeForces】CodeForces Round #530 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Sum in the tree【思路要点】题目中给出的限制条件相当于限定了所有深度为奇数的点及其父亲的权值和,显然,将深度为偶数的非叶节点的权值设置得尽可能大有利于减少全局权值和。时间复杂度 O(N)O(N)O(N) 。【代码】#include<bits/stdc++.h>usi...原创 2019-01-20 11:30:34 · 651 阅读 · 0 评论 -
【LOJ2261】「CTSC2017」密钥
【题目链接】点击打开链接【思路要点】使用一个简单的扫描线可以求出 XXX 在每个位置处的特征值。时间复杂度 O(N)O(N)O(N) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e7 + 5;typedef long long ll;typedef long d...原创 2018-11-01 13:47:28 · 452 阅读 · 0 评论 -
【BZOJ5328】【SDOI2018】物理实验
【题目链接】点击打开链接【思路要点】旋转、平移坐标系,使得直线导轨为X轴。注意到所有线段互不相交,且与X轴没有交点。对一二和三四象限的线段分别做一遍扫描线,求出每一段在X轴可见的线段到X轴的投影点以及其真实长度和投影长度的比值,并将一二和三四象限的结果合并。我们放置激光发射器的位置是无限多的,但投影点的个数是有限多的,并且我们发现一定有至少一个最优解满足激光发射器的某一个端点恰好为一个投影点。Tw...原创 2018-05-31 13:36:48 · 525 阅读 · 0 评论 -
【LOJ2585】「APIO2018」新家
【题目链接】点击打开链接【思路要点】对时间轴进行扫描线,在时间轴上的一段区间可以表示为一次插入操作和一次删除操作。问题被转化为:维护一个序列,支持在某处插入/删除一个数,以及询问以某个位置为中心,包含所有种类的数的区间的最小长度。对于询问,不难想到二分答案,二分答案后我们需要支持的是询问区间内是否出现了所有种类的数。对于每一种数,我们维护一个支持查询前驱后继的平衡树(std::set)。在序列上维...原创 2018-05-23 11:01:27 · 788 阅读 · 0 评论 -
【CodeForces】CodeForces Round #483 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Game【思路要点】排序,取中位数为答案。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void chkmax(T ...原创 2018-05-17 14:30:35 · 342 阅读 · 0 评论 -
【BZOJ5253】【2018多省省队联测】制胡窜
【题目链接】点击打开链接【思路要点】首先,一个询问的答案只和询问串的在主串中所有出现的位置有关。直接求解所有出现位置显然会超时,一种可行的方法是用离线询问+后缀自动机(树)+线段树合并来维护出现位置的右端点集合。先解决一个小问题:定位一个询问可以在后缀树上倍增在\(O(LogN)\)的时间内完成。现在我们有了一棵维护着所有询问串出现位置的右端点的线段树,考虑如何得到答案。考虑计算出所有的两个断点把...原创 2018-04-10 17:32:40 · 968 阅读 · 2 评论 -
【BZOJ5103】【POI2018】Ró?norodno
【题目链接】点击打开链接【思路要点】分开考虑每个颜色,每一个点对一个\(K*K\)的正方形有贡献,但同一种颜色的贡献至多为1。从上到下扫描矩阵,我们需要维护一些正方形的进入和删除。由于正方形边长固定,每次贡献实际产生变化的是一个区间。用线段树支持前驱后继的查找即可确定产生变化的区间。每处理完一行,用差分+前缀和统计本行的答案。时间复杂度\(O(N*M*LogM)\),BZOJ老年机太慢了,卡不过去...原创 2018-03-19 20:21:55 · 511 阅读 · 0 评论 -
【CodeForces1167G】Low Budget Inception
【题目链接】点击打开链接【思路要点】考虑旋转时被卡住的情况,共有两种。111 、建筑的端点撞到地面。222 、建筑与建筑相撞。情况 111 只需要找到折点左右最近的建筑即可。考虑情况 222 ,可以发现,可能相撞的只有建筑的顶点,且若左侧建筑物距离折点为 xxx ,只有右侧距离折点 x−1,x,x+1x-1,x,x+1x−1,x,x+1 处的建筑可能与其相撞,若坐标值域较...原创 2019-08-28 13:47:04 · 253 阅读 · 0 评论