首页 > 其他分享 >qoj#5098

qoj#5098

时间:2023-06-03 20:55:04浏览次数:34  
标签:5098 pre 结点 le max mid 端点 qoj

兔队线段树题。

记 \(\{a_i\}\) 的前缀和为 \(\{S_i\}\),记距离 \(i\) 位置最近的颜色相同位置为 \(pre_i\),那当钦定某个点 \(i\) 为右端点时,左端点最小可以为 \(\max\limits_{1\le j\le i}\{pre_j\} + 1\)。

考虑对于线段树上每个结点 \(p\),记其对应的区间为 \([l_p, r_p]\),中点为 \(mid_p\)。我们在该节点维护 \(mx_p = \max\limits_{l_p\le i\le mid_p}\{pre_i\} + 1\),再维护仅考虑区间 \([l, r]\) 时以 \((mid, r]\) 为右端点的区间的最大权值 \(val_p\),即 \(\max\limits_{mid<i\le r}\{S_i - S_{\max_{l\le j\le i}\{pre_j\}}\}\)。

对于询问 \([l, r]\) 可以拆到若干个结点上,记 \(c(x, p)\) 表示询问以 \([l_p, r_p]\) 中的点为右端点,左端点不小于 \(x\) 的最大权值,那么可以分类讨论:

当 \(x>mx_p\) 时,\(c(x,p) = c(x, rson(p))\);

当 \(x \le mx_p\) 时,右半区间原来可以取到的显然仍然可以全部取到,故 \(c(x, p) = \max(c(x, lson(p)), val_p)\)。

最后会到哪里捏?第一个 \(pre_i\ge x\) 的点,它的前驱 \(i-1\) 就是满足 \(\max\limits_{1\le j\le i-1}\{pre_j\} < x\) 的最大 \(i - 1\),这就是左端点为 \(x\) 时右端点最大的点。

再看看这个询问喵,前缀 \(pre\) 的限制是怎么做的喵,结点外的前缀 \(pre\) 直接利用 \(x\) 来限制,结点内的 \(pre\) 在维护结点信息时就已经被限制好啦。

怎么 pushup 捏,更简单了喵,直接 \(val_p = c(mx_p, rson(p))\) 喵。

时间复杂度两只 \(\log\) 喵。

标签:5098,pre,结点,le,max,mid,端点,qoj
From: https://www.cnblogs.com/0922-Blog/p/qoj5098.html

相关文章

  • 5098: Sweet Butter spfa
    描述  FarmerJohnhasdiscoveredthesecrettomakingthesweetestbutterinallofWisconsin:sugar.Byplacingasugarcubeoutinthepastures,heknowstheN(1<=N<=500)cowswilllickitandthuswillproducesuper-sweetbutterwhichcan......
  • QOJ5256 [CERC2022] H. Insertions 题解
    题面题意:给定字符串\(S,T,P\),求将\(T\)插入进\(S\)之后\(P\)最多的出现次数。输出:最多的出现次数;达到这个最多出现次数的插入位置数量;达到这个最多出现次数......
  • [qoj4820]Kitten's Computer
    为了方便,以下位运算中均省略\(\and\)将\(a_{2}\)的每一位拆开,对于第\(i\)位,将该位乘\(a_{1}\)的结果放到\(a_{A_{i}}\)上具体的,将该位单独取出放在最低位,并倍增使其余位......
  • QOJ5402. 术树数
    \(\text{Problem}\)术树数\(\text{Summary}\)这题有许多优美的结论,并加深了对线性基的理解图论中非常有用的结论(路径可重):1.包含一个点的简单环张成了包含一个点的所有......
  • [qoj4884]Battleship: New Rules
    记\(m=n+1\),注意区分"格子"和"格点"由于不能有公共格点,不妨从此角度分析——格点有\(m\timesm\)个,每次覆盖其中\(2\timesa\)的矩形(其中\(a\ge2\))覆盖格子与格点总数......
  • QOJ5013 Astral Birth(凸包,分治,堆,贪心)
    QOJ5013AstralBirth\(m=1\)直接求LIS。否则对于\(m\ge2\),就是求把序列分成\(m+1\)段,每段翻转或者不翻转,最终最多\(1\)的个数。很明显相邻两段翻不翻转的......
  • QOJ #4812. Counting Sequence
    题面传送门首先显然有一个\(O(n^2)\)的dp:设\(f_{i,j}\)表示当前总和为\(i\),结尾是\(j\)的方案数,转移是平凡的。因为相邻两项差只有\(1\),因此所有\(a_i\)和\(a......
  • FZQOJ 1280
    GameTJ(含另类思路)题意:给定$N$个按长度排序的单词。规定接龙的规则为:若$t$是$s$的真前缀,则$s$可以接龙在$t$后面。求最多接龙次数。$N......
  • [qoj4208]Flight to the Ford
    维护两个集合\(S\)和\(T\),表示当前最后一个询问正确/错误时可能的答案初始\(S=[1,10^{9}]\)且\(T=\empty\),每次划分\(\begin{cases}S=S_{1}\cupS_{2}\\T=T_{1}\cupT_{2......
  • 【QOJ 4273】Good Game(分类讨论)(构造)
    GoodGame题目链接:QOJ4273题目大意给你一个01串,每次可以删一个长度为2/3的全0子串或者全1子串。要你构造一种方法把串删空,或者输出无解。思路首先发现这个......