首页 > 其他分享 >CF1876D Lexichromatography 题解

CF1876D Lexichromatography 题解

时间:2024-01-16 21:11:07浏览次数:35  
标签:log 题解 CF1876D Lexichromatography 任意子 序列

Problem - D - Codeforces

Lexichromatography - 洛谷

  • 先注意读题:

  • 对于所有的值 \(k\),在这个序列的任意子区间 \([l,r]\) 中,值为 \(k\) 且为红色的位置数 减去 值为 \(k\) 且为蓝色的位置数 的绝对值不超过 \(1\)

  • 注意是任意子区间

  • 这说明什么?说明如果只有第二个条件,我们只需要让拥有相同值的数交替染红色和蓝色即可,因此一种值最多只有两种情况,最终答案的情况是 \(2^k\)

  • 我们考虑加上第三个限制怎么做?考虑遇到第一个红蓝组成的子序列不等的值,此时我们存在唯一一种是否交换这两种颜色的方案,使得红子序列字典序严格小于(或大于)蓝子序列;如果两个子序列值相等的两个位置,交换后肯定还相等。

  • 因此,设 \(a\) 表示红 \(<\) 蓝的方案数,\(b\) 表示蓝 \(<\) 红的方案数,\(c\) 表示 \(=\) 方案数。可以知道 \(a=b,a+b+c=2^k\),所以 \(a=b=\frac{2^k-c}{2}\)

  • 现在我们只需要考虑怎么求 \(c\)。我们发现如果出现 1 2 2 1 这种形状的,那肯定就不行了,因为无论染成什么颜色都会有相应的大小关系,即 \(c=0\)

  • 而如果不是这种形状,如果把同一个值的第奇数个和第偶数个连一条线段,则两两线段不会互相包含,那这两个值第一个位置染的颜色必须相同,也就是说他们被”绑定“了。设绑定的组数为 \(d\),则 \(c=2^d\)

  • 最终复杂度 \(O(n \log n)\),\(\log\) 在并查集

标签:log,题解,CF1876D,Lexichromatography,任意子,序列
From: https://www.cnblogs.com/fox-konata/p/17968567

相关文章

  • P2572 [SCOI2010] 序列操作 题解
    题解:序列操作比较综合的ds题,综合了线段树常见的几种操作:维护最大子段和、区间翻转、区间求和、区间覆盖。维护子段和常见的我们维护三类东西:前缀最长连续段、后缀最长连续段、当前区间上的最大子段和。在pushUp时,对于一个区间的前后缀最值首先等于左右子树的最长前后缀,......
  • P6054 题解
    blog。网络流——最小割。每个选手做某一套题的期望奖励固定,计算方式参考样例解释。这个假期望被去掉了。发现是典型的「\(m\)种强制选一」问题。考虑每个人都建一条链,跑最小割,每条链必定割\(\ge1\)条边,割哪条边就表示选哪套题。code,时间复杂度\(O(\text{能过})\)。......
  • 洛谷P10058 题解
    这种翻转的题明显已经做烂了好吧……首先显而易见,翻转偶数次对结果没有影响,只需要考虑奇数次翻转的情况。由于是整体移动的操作,可以抓住一个点来移动,然后还原出原来的序列。需要注意的是字符串是环形移动,因此如果当前点的位置大于字符串长度,要对字符串的长度进行取余操作。写......
  • Atcoder Beginner Contest 330 题解
    AtCoderBeginnerContest330题解A-CountingPasses签到voidShowball(){intn,l;cin>>n>>l;intcnt=0;for(inti=0;i<n;i++){intx;cin>>x;cnt+=(x>=l);}cout<<cnt<<endl;}B-Minimize......
  • CF1437F Emotional Fishermen 题解
    题意:有\((n\le5000)\)个渔民,每个渔民钓了一条重\(a_i\)的鱼,渔民按任意顺序展示他们的鱼。若当前渔民的鱼的重量为\(x\),之前展示过的鱼的最大重量\(y\)。一个排列满足条件当且仅当对于每个\(x\),满足\(2y\lex\)或\(2x\ley\)。问有多少个排列满足条件,对\(998244353......
  • ABC336 F Rotation Puzzle 题解
    QuestionABC336FRotationPuzzle给出一个\(H\timesW\)的矩阵,里面填有数字,有一种操作选定一个\((x,y)\)交换\((i+x,j+y)\)和\((H-i+x,W-j+y)\)对于每一个\(1\lei\leH-1,1\lej\leW-1\)问,是否能经过\(20\)次以内的操作使得,最后的矩形变成\((i,j)=((i-1)\t......
  • P1002题解
    思路设\(dp_{i,j}\)表示第\(i\)行\(j\)列卒走到这里有多少种方式。卒是可以向右和下走,所以到这个点只能从左或上来,不难得出转移公式:\(dp_{i,j}=dp_{i-1,j}+dp_{i,j-1}\)。如果马在这个点上或者说马能到这个点上,那么卒不能到这个点,也就是卒到这个点的方式为\(0\)。如......
  • P1003题解
    简单模拟题。思路枚举每一个地毯,因为后面的会覆盖前面的,所以从正序枚举。如果要求的点的坐标在当前地毯上,则将答案赋值为当前地毯编号。最后输出答案。那如果这个点没有地毯呢?答案初始设为\(-1\),这样没有地毯覆盖的话,答案不会改变,这样输出答案就会是\(-1\)。注意:记得赋初......
  • P10058题解
    怎么前三题都是思维题啊。思路总共有三个操作,先不看翻转操作。如果你右移\(x\)位之后,左移\(x\)位,那么就相当于没有操作。这个应该是很好理解的。我们根据上面的结论,能得出以下代码。if(op==">"){cin>>x;f+=x;}elseif(op=="<"){......
  • CF1409D题解
    思路因为数据较大,使用字符串读入。考虑使用贪心。先统计出当前数码之和。然后从低位往高位枚举,看一下把当前位改了之后是否小于等于\(s\)。如果小于的话,则统计出把当前位往后所有位都改为0,\(k\)为多少,求出的\(k\)就是最优解。说明一下为什么要从低位往高位枚举,这样如果成......