关闭

[几何 扫描线 最大子段和] JOI Open Contest 2017 Bulldozer

题目大意:给出平面上n个带权点,有正有负,求平面上两条平行直线之间的点权和最大是多少 VIEW PROBLEM - BULLDOZER (JOI17_BULLDOZER)直接枚举斜率,点按照距离排序后是一个最大子段和问题 然后考虑扫描线旋转斜率,两个点相对关系变化只会发生在斜率与两点连线平行的情况,那么两点位置swap一下,更一般的如果是一段都满足这个,那么这一段要reverse一下 就是把两...
阅读(134) 评论(0)

[扫描线 二分图最大匹配 线段树优化网络流] Codeforces 793G Tinkoff Challenge - Elimination Round G. Oleg and chess

这个我们首先可以转化成一个二分图最大匹配的模型 但是肯定跑不出 首先扫描线 把free的格子剖成O(n)O(n)个矩形 对两边都建成线段树 每个矩形对应两边各O(logn)O(\log n)个点 两两相连 总边数O(nlog2n)O(n\log^2n)#include #include #include #include<cstrin...
阅读(233) 评论(0)

[单调栈 扫描线] BZOJ 4826 [Hnoi2017]影魔

先用单调栈找出比ii大的第一个数lil_i 和 rir_i 然后[i,i+1][i,i+1]有p1的贡献 [li,ri][l_i,r_i]有p1的贡献 [li,x] x∈[i+1,ri−1][l_i,x] \ x\in [i+1,r_i-1] 有p2的贡献 [x,ri] x∈[li+1,i−1][x,r_i] \ x\in [l_i+1,i-1] 有p2的贡献 放在平面上就是点和线段 矩形求...
阅读(434) 评论(0)

[扫描线 线段树] Codeforces 720D Russian Code Cup 2016 - Finals D. Slalom

注意这里的本质不同的含义 是左边和右边的障碍集合不同 那么我们要考虑怎么去重 我们要求能向右走就向右走 也就是说我们考虑把所有向左上的角都折叠起来然后就可以扫描线加线段树了 我们遇到一个障碍 就把能爬上来的都统计到障碍上面的那格 注意能爬需要一些判断#include #include #include #include usi...
阅读(196) 评论(0)

[扫描线 杂题] Codeforces Gym 101190 NEERC 16 E. Expect to Wait

智商越来越捉急 看图就知道了 答案就是阴影的面积 扫描线一波就好了#include #include #include using namespace std; typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return...
阅读(380) 评论(0)

[扫描线 线段树] BZOJ 4422 [Cerc2015]Cow Confinement

好题 但是懒得写题解 最近特别懒#include #include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+frea...
阅读(149) 评论(0)

[Treap 笛卡尔树 扫描线 补集转化] BZOJ 2658 [Zjoi2012]小蓝的好友(mrx)

这个先转化成全部矩形 C2R+1∗C2C+1C_{R+1}^2*C_{C+1}^2 减去不包含点的矩形 我们考虑扫描线 也就是以当前直线作为右边界的矩形有多少个 对于每个纵坐标 设h表示最左能扩展到哪里 假设hmin(1,n)=hxh_{min (1,n)}=h_x 那么答案至少应该C2C+1∗hminC_{C+1}^2*h_{min} 然后还要加上C2x−1∗(hmin(1,x−1)−...
阅读(304) 评论(0)

[扫描线 线段树上二分] BZOJ 4411 [Usaco2016 Feb]Load balancing

第一维扫描线 第二维线段树上二分 好久之前的代码了 #include #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,10000,std...
阅读(306) 评论(0)

[线段树 扫描线 鬼畜] BZOJ 3228 [Sdoi2008]棋盘控制 && BZOJ 1905 Soldier 士兵控制的棋盘

这种题目太恶心  把坐标轴转一下 就是裸的扫描线 但是是网格 很恶心 我用线段树算出无边界的情况 分奇数列和偶数列算两次 然后四个边界算一下去掉 四个角重复减的算一下 加回去 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef l...
阅读(301) 评论(0)

[扫描线 set] BZOJ 4561 [JLoi2016]圆的异或并

这道题算什么 这道题才可怕: [扫描线 树链剖分 树状数组] BZOJ2758 [SCOI2012]Blinker的噩梦...
阅读(549) 评论(0)

[扫描线 树状数组 随机数列 优化] BZOJ 2221 [Jsoi2009]面试的考验

%%%JSB #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1=...
阅读(527) 评论(0)

[扫描线 线段树] BZOJ 2161 布娃娃

这读入真让人蛋疼 本来想的是两个log的二分 #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,...
阅读(418) 评论(0)

[扫描线 线段树 拓扑排序] BZOJ2584 [Wc2012]memory

%%% zky :http://blog.csdn.net/iamzky/article/details/42166795 “P.S.找来kAc的标程想对拍,然后越改越像越改越像……” ——zky 找来zky的程序 然后越改越像 #include #include #include #include #include #include #define V G[p].v #define ep...
阅读(310) 评论(0)

[扫描线 树链剖分 树状数组] BZOJ2758 [SCOI2012]Blinker的噩梦

扫描线  一般扫描线的做法就是想象一根线向某个方向扫过,进入的进入,出去的出去,用一个set维护序列或是结合线段树,当然最恶心的就是加上计算几何 但是落实到这题上就是各种鬼畜乱搞,只能膜大神 省选前做难题的结果是——到处翻题解,程序越改越像 “题意:平面上有n个多边形(凸包和圆)。任意两个多边形AB只有两种关系:(1)A包含B或者B包含A;(2)AB的公共面积为0。每个多边形有一个...
阅读(985) 评论(0)

[扫描线 线段树 暴力] BZOJ 4059 [Cerc2012]Non-boring sequences

扫描线: http://blog.csdn.net/PoPoQQQ/article/details/46380617 暴力大法好:http://blog.csdn.net/geotcbrl/article/details/49797889 定义lasti表示第i个元素上一次出现的位置(第一次出现则为0),nexti表示第i个元素下一次出现的位置(最后一次出现则为n+1),那么这个元素...
阅读(723) 评论(0)

[扫描线 计算几何] BZOJ 1845 [Cqoi2005] 三角形面积并

%%%PoPoQQQ:http://blog.csdn.net/popoqqq/article/details/42581881 经典的扫描线 首先求出所有直线交点的横坐标,排序,去重 然后对于每个横坐标,两段之间夹的部分一定是一个或多个梯形 因此我们取中位线,求出中位线被所有三角形覆盖区间的区间并的长度,即可计算出这部分的面积 #includ...
阅读(779) 评论(0)
    个人资料
    • 访问:264081次
    • 积分:11943
    • 等级:
    • 排名:第1328名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:50条
    最新评论