关闭

[单调栈 线段树] 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 左端点边挪边用单调栈维护最大最小值 入栈出栈就线段树上区间...
阅读(102) 评论(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的贡献 放在平面上就是点和线段 矩形求...
阅读(427) 评论(0)

[暴力 单调栈] BZOJ 2228 [Zjoi2011]礼物(gift)

这个东西 搞法不一 我是这么搞的 沿着zz轴的方向看 一定是一些重叠的正方形叠在一起 我们对于每一个zz 都对(x,y)(x,y)求出fx,yf_{x,y} 表示最大的以(x,y)(x,y)为右下角的正方形的大小 然后在zz这一维上 大小就是区间最小值 我们用单调栈弄一弄就好了 我写的二分求fx,yf_{x,y} 复杂度O(n3logn)O(n^3\log n) 但是实际上用悬线法可...
阅读(261) 评论(0)

[分治 || 单调栈 单调队列] 51Nod 1215 数组的宽度

分治 #include #include #include using namespace std; typedef pair abcd; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,1...
阅读(199) 评论(0)

[决策单调性 分治||单调栈 DP] BZOJ 2739 最远点

决策单调性 用分治或者单调栈  单调栈没打过 尴尬 #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,...
阅读(352) 评论(0)

[线段树 单调栈] UNR #1 争夺圣杯

争夺圣杯 用单调栈求出left right 可以发现每个点的贡献是关于left right的分段函数 然后就是分段函数累加求和 当时打的线段树 看了题解涨姿势了 可以差分 做到O(n) #include #include #include using namespace std; typedef pair abcd; typedef long long ll; inline...
阅读(258) 评论(0)

[分治 单调栈] BZOJ 4237 稻草人

x排序 考虑分治 左下角在左半边 右上角在右半边  两边各维护一个单调栈 然后左边查询在右边二分 细节自行在代码中领会 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef long long ll; inline char nc()...
阅读(334) 评论(0)

[莫队 单调栈] BZOJ 4540 [Hnoi2016]序列

题解:http://www.cnblogs.com/Ngshily/p/5409337.html 给出一个序列,求某段区间的位置不同子串的最小值之和 对于前4040,我们可以n2n2预处然后O(nn√)O(nn) 预处理中zzz[i][j]zzz[i][j]表示以ii开头,结尾最长到jj的前缀子串的最小值之和 同理fff[i][j]fff[i][j]表示倒过来的情况...
阅读(517) 评论(0)

[Trie树 单调栈] BZOJ 4523 [Cqoi2016]路由表

建一棵字典树,记一下时间 然后就是在字典树上匹配 因为匹配长度是单调增的,所以维护一个时间的单调递增栈 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef long long ll; inline char nc() { stati...
阅读(258) 评论(0)

[单调栈] BZOJ 1345 [Baltic2007]序列问题Sequence

单调栈维护 自己体会一下应该问题不大 #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,1000...
阅读(167) 评论(0)

[单调栈] BZOJ 1113 [Poi2008]海报PLA & BZOJ 1628 [Usaco2007 Demo]City skyline

双倍经验 就是把下面能合并的合并成一张 单调栈维护 1113 #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,100000,stdin...
阅读(199) 评论(0)
    个人资料
    • 访问:261088次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论