关闭
当前搜索:

[二分图匹配 线段树] Codeforces 573D Round #318 [RussianCodeCup Thanks-Round] (Div. 1) D. Bear and Cavalry

如果没有限制,显然根据排序不等式 当每个点最多有一个限制不能选的时候,有一个很重要的性质 性质:i对应的点与i的距离<=2 证明: 设有一种情况i对应i+3 i—–(i+3) i+1—(i+2) i+2—(i) i+3—(i+1) 那么,对于i,i+1来说,必定在(i–i+2),(i+1–i+3)中有一个限制必选,否则交换i,i+1更优 同理,(...
阅读(191) 评论(0)

[单调栈 线段树] Codeforces 407E Round #239 (Div. 1) E. k-d-sequence

首先肯定是一段模 dd 相同的数 然后枚举左端点 那么右端点应该满足条件 数字不重复出现且 maxvl,r−minvl,r≤r−l+kmaxv_{l,r}-minv_{l,r}\le r-l+k,这个最大最小值是除过 dd 的 也就是maxvl,r−minvl,r−r≤k−lmaxv_{l,r}-minv_{l,r}-r\le k-l 左端点边挪边用单调栈维护最大最小值 入栈出栈就线段树上区间...
阅读(129) 评论(0)

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

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

[线段树] Codeforces Round #419 (Div. 1) D. Karen and Cards

从小到大枚举xx,剩下的限制是y>bi⋀z>ciy>b_i \bigwedge z>c_i或者y>bi⋁z>ciy>b_i \bigvee z>c_i 对应的是平面上一个矩形或者挖掉一个矩形 发现平面上矩形的交取个min就好了,挖掉的矩形要取并,这个可以用平衡树或线段树维护 大概是这样,我是灵魂画师 #include #include #include<al...
阅读(163) 评论(0)

[线段树] Codeforces 811E Round #416 (Div. 2) E. Vladik and Entertaining Flags

线段树 直接维护一段区间的答案 以及左右边界之间的连通性 然后合并的时候 根据中线并查集合并下 这么大常数竟然过了#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; ret...
阅读(180) 评论(0)

[二进制分组 线段树 || 点分治 分治] UOJ #191 【集训队互测2016】Unknown

详见lzz的集训队论文二进制分组做法二进制分组是在线段树的结构上做的 方便区间查询 至于删除 采用延迟重构的思想 每一层只有最后一个区间是萎的 我们需要递归下去 询问还是O(logn)O(\log n)个节点 重构复杂度势能分析下O(nlogn)O(n\log n) 只有上凸包是有效的 合并的时候采用归并加Graham可以做到O(n)O(n) 不然以我的常数 T的血惨 但是卡内存 只有90分#...
阅读(394) 评论(1)

[历史最值问题] UOJ #164 【清华集训2015】V

详见吉丽的集训队论文吧我们发现修改操作可以变为这样一个形式S:x=max(x+A,B)S:x=max(x+A,B) 这个标记是可以合并的 就可以求当前值了 现在还要历史最值 我们就再加一个标记SSSS表示历史最大的标记 因为这个形式是一条折线 所以历史最大也是可以合并的 具体的我们两段时间有两对标记S,SSS,SS和s,sss,ss 时间先后分别对应pushdown时的父亲儿子关系 我们发现...
阅读(267) 评论(0)

[Segment tree Beats! || 分块] Codeforces 793F Tinkoff Challenge - Elimination Round F. Julia the snail

我们用fif_i表示左边界是ii的答案 一条线段[a,b][a,b]对答案的影响是 f1f_1到flf_l中大于等于aa的都跟bb取max 这个可以用线段树科技做 复杂度证明跟区间最值操作的势能分析应该差不多#include #include #include #include using namespace std;inl...
阅读(426) 评论(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...
阅读(301) 评论(0)

[线段树] Codeforces 794F Round #414 F. Leha and security system

线段树的简单应用?#include #include #include using namespace std; typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+frea...
阅读(183) 评论(0)

[线段树 杂题] Codeforces 806E VK Cup 2017 Round 3 E. Blog Post Rating

这个我们发现排好序后跑答案是最大的 然后就是维护一个支持插入的序列 我本来想把权值相同的压成一段 然后就gg 出门左转神犇学弟博客#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;...
阅读(233) 评论(0)

[线段树] BZOJ 4821 [Sdoi2017]相关分析

拆开柿子之后 发现要维护 ∑xi\sum x_i,∑yi\sum y_i,∑x2i\sum x_i^2,∑xi∗yi\sum x_i*y_i 直接线段树就好了 两个标记合并的时候要注意下 一种可以覆盖另一种 似乎神犇有更短更快的方法? #include #include #include using namespace std; type...
阅读(206) 评论(0)

[线段树 瞎搞] BZOJ 4876 [Zjoi2017]线段树

这个题在考场上应该是能搞出来的 可是当时debuff太强 没敢想正解 写完了250行的暴力 正解呢 就是类似zkw线段树 我们从叶节点l−1l-1和r+1r+1一直走直到碰在一起 这样搞出了一条左链和一条右链 左链上的右兄弟和右链上的左兄弟就是所有要找的点 然后我们讨论下查询点uu和链底的lca的位置 进而可以知道链上所有点和uu的lca的深度和 这个细节有点多 不对拍很容易写挂 给考场上写挂的人...
阅读(350) 评论(0)

[spaly模拟 线段树] BZOJ 4825 [Hnoi2017]单旋

发现旋最小值到根 最小值深度变为1 他的右子树深度不变 其他都加1 旋最大值类似 这个只要线段树就好了 怎么求子树 看他的father 插入操作 找出前驱和后继 一定是祖先子孙关系 新点往深度大的下面挂#include #include #include #include using namespace std;inline ch...
阅读(648) 评论(0)

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

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

[线段树] BZOJ 4388 JOI2012 invitation

最近真的懒 Claris的题解#include #include #include #include #include #define pb push_back using namespace std; typedef long long ll;inline char nc(){ static char buf...
阅读(118) 评论(0)

[线段树 均摊复杂度] BZOJ 2130 魔塔

不会做QAQ 还是转身向Claris的题解吧#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1...
阅读(266) 评论(0)

[类欧几里得算法 线段树] BZOJ 1938 [CROATIAN2010] ALADIN

直接在线段树上区间覆盖咯 怎么求和? ∑x=lr(A∗x) mod B=∑x=lrA∗x−B∗∑x=lr⌊A∗xB⌋\sum_{x=l}^r (A*x)\ mod\ B=\sum_{x=l}^r A*x-B*\sum_{x=l}^r\lfloor {A*x \over B}\rfloor后半部分直接用类欧求就好了 类似 [类欧几里得算法 数论] BZOJ 2987 Earthquake 但是更...
阅读(182) 评论(0)

[字符串Hash 线段树] AOJ 2734 Donut Decoration

考虑把每个点看成一个可以在后面加字符的字符串 每次区间加一个字符串 相当于对区间的hash值做一次运算 这个直接线段树就行了#include #include #include using namespace std; typedef unsigned int uint;inline char nc(){ static char buf...
阅读(130) 评论(0)
73条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:309224次
    • 积分:12399
    • 等级:
    • 排名:第1311名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:54条
    最新评论