首页 > 其他分享 >p4632-solution

p4632-solution

时间:2024-03-04 20:58:21浏览次数:17  
标签:p4632 pre 颜色 线段 solution multiset Theta 二分

P4632 Solution

link

对时间扫描线,就变成支持单点加入删除一个颜色点,求所有颜色距离某个点的距离最大值。

考虑二分答案,现在就是要检验 \([x-mid,x+mid]\) 内是否有 \(1\sim k\) 颜色的点各至少一个。

数颜色可以考虑维护 \(pre_i\) 表示上一个与该点同色的位置。然后区间 \([l,r]\) 出现过所有颜色,等价于 \([r+1,+\infty)\) 的所有 \(pre\) 大于等于 \(l\);否则如果存在一个 \(pre<l\),则说明这个颜色在区间中没出现过。

这里我们在 \(0,10^8+1\) 位置加 \(1\sim k\) 的颜色点各一个。就不用讨论了。。

\(pre\) 可以用 multiset 维护某个颜色的所有点,求前驱后继可以将插入删除变为 \(\Theta(1)\) 次 \(pre\) 的修改。

二分后查询一下 \((x+mid,+\infty)\) 的 \(pre\) 最小值。值域大,动态开点线段树维护即可。

这样复杂度是 \(\Theta(n\log^2n)\) 的。发现可以线段树二分,于是复杂度可以降到 \(\Theta(n\log n)\)。

有很多细节,首先某一时刻一个位置会有多个颜色的点,甚至可能有多个同颜色的点。

所以对于线段树的叶子要维护一个 multiset 搞这里的所有点。还有 multiset 删除要用 lower_bound

线段树二分的话,要注意最后 l==r 返回时判一下是否等于 \(10^8+1\),然后以此看看是否有解,有解的话要用 x-t[o].mn 计算。

这是因为我们的区间右端点对 \(10^8+1\) 取了 \(\min\),可能会有超出去但左端点不超的而情况。

标签:p4632,pre,颜色,线段,solution,multiset,Theta,二分
From: https://www.cnblogs.com/iorit/p/18052647

相关文章

  • p4555-solution
    P4555Solutionlink双回文串的左右两半部分显然是互相独立的。于是考虑求出\(lm_i\)表示以\(i\)结尾的最长回文子串长度,\(rm_i\)表示以\(i\)开头的最长回文子串长度,最后扫一遍所有的分隔符求\(lm+rm\)的最大值即可。考虑如何求\(lm,rm\)。先用manacher拉出\(p\),......
  • Solution - 消息传递
    Link。首先我们假设在看本文章的所有人除了@左乐都已经使用点分树A掉了震波。然后我们要怎么简单修改A掉这个消息传递呢。震波是维护距离\(\leqk\)的点,这里只需要维护\(=k\)的,显然我们可以改掉维护前缀和的那个数据结构(比如树状数组),直接用普通数组/vector。跳......
  • p4137-solution
    P4137Solutionlink考虑建主席树:权值线段树的叶子维护这个权值最后出现的下标,push_up的时候取\(\min\)。这样一个区间的\(\min\)小于\(k\)意味着有一个权值最后出现的下标小于\(k\),也就是说\(k\)后面没有出现这个权值。也就是说mex就在这个区间内。这样询问的时候......
  • p3990-solution
    P3990Solutionlink一次只能跳一步的情况下:\(dp_{i,j}=dp_{i-1,j-1}+dp_{i-1,j}+dp_{i-1,j+1}\)接下来考虑能跳奇数步:你发现跳\(3\)步相当于先跳一个奇数\(1\)再跳一个\(2\),跳\(5\)步相当于先跳一个奇数\(3\)再跳一个\(2\)也就是说能够一步跳到\((i,j)\)的一定能......
  • p3773-solution
    P3773Solutionlink\[\binomnm\bmod2=\binom{n\bmod2}{m\bmod2}\binom{n/2}{m/2}\bmod2\]我们要让\(\binomnm\bmod2\)不为\(0\),也就是让右式的两项均不为\(0\)。考虑\(\binom{n\bmod2}{m\bmod2}\):\(n\bmod2\)和\(m\bmod2\)的取值要么是\(0\)要么是\(1\)......
  • p3768-solution
    P3768Solutionlink\(\begin{aligned}\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)&=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^nijd[\gcd(i,j)=d]\\&=\sum_{d=1}^nd^3\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}ij[......
  • p3435-solution
    P3435Solutionlink画个图:显然四个黄色部分是相等的。也就是说,黄色部分是A的一个border。根据题目,周期的长度也就是Q的长度,也就是A的长度减去它的某个border的长度。现在要求这个最大,由于A的长度固定,要求的也就是A的最小border长度。根据KMP求出来的nxt......
  • p3426-solution
    P3426Solutionlink考虑dp。设\(dp_i\)表示至\(i\)的字符串的答案。KMP求出nxt数组,那么显然\(dp_i\)要么等于\(i\)要么等于\(dp_{nxt_i}\)。什么时候\(dp_i\)等于\(dp_{nxt_i}\)呢?这时这个字符串一定由一个与\(nxt_i\)有相同\(dp\)值的前缀再印上一个bo......
  • p3306-solution
    P3306Solutionlink\(x_{i+1}\equiva\timesx_i+b\pmodp\)\(x_{i+1}\equiva(ax_{i-1}+b)+b\pmodp\)\(x_{i+1}\equiva(a(ax_{i-2}+b)+b)+b\pmodp\)\(...\)\(\displaystylex_{i+1}\equiva^ix_1+b\sum\limits_{j=0}^{i-1}a^j\pmodp\)即......
  • p3214-solution
    P3214Solutionlink为了方便,我们求有序的答案最后再除掉\(m!\)。题目的限制包括:每种元素总共出现偶数次不存在相同的两个集合没有空集考虑偶数的限制,你发现每个集合中元素出现次数要么\(0\)要么\(1\)。于是如果你确定了前\(m-1\)个集合,最后一个集合会被唯一......