首页 > 其他分享 >CF1705E Mark and Professor Koro 题解

CF1705E Mark and Professor Koro 题解

时间:2023-12-01 18:55:05浏览次数:34  
标签:le 二进制 题解 Professor pos 2e5 num CF1705E 100

题意:

给定一个长度为 $ n $ $ (1 \le n \le 2e5) $ 的序列,每次可以把两个相等的 $ a_i $ 和 $ a_j $ 合并为一个 $ a_i + 1 $ 。给定 $ q $ $ (1 \le q \le 2e5) $ 次修改,每次将 $ a_k $ 修改为 $ l $ ,求每次操作后合并到无法再合并时出现的最大数。其中,$ 1 \le a_i \le 2e5 $。

思路:

由于 $ 1 \le a_i \le 2e5 $ ,考虑从值域入手。将序列 $ a $ 视为一个数字 $ num $ ,则 $ a_i $ 为 $ num $ 二进制下第 $ a_i $ 位,从低位到高位依次进位。因此,问题转化为维护高精度二进制数字

每次将 $ a_k $ 修改为 $ l $ :相当于删除 $ a_k $ ,添加 $ l $ 。

删除 $ a_k $ :相当于 $ num $ 减去 $ 2^{a_k} $ ,相当于 $ num $ 二进制下第 $ a_k $ 位减去 $ 1 $ ,可能会向高位连续借 $ 1 $ ,直至高位第一个 $ a_{pos} = 1 $ 出现为止,借位结束后 $ a_{pos} = 0 $ , $ a_i = 1(i ∈ [k,pos - 1]) $ 。

添加 $ l $ :相当于 $ num $ 增加 $ 2^l $ ,相当于 $ num $ 二进制下第 $ l $ 位增加 $ 1 $ ,可能会向高位连续进 $ 1 $ ,直至高位第一个 $ a_{pos} = 0 $ 出现为止,进位结束后 $ a_{pos} = 1 $ , $ a_i = 0(i ∈ [k,pos - 1]) $ 。

考虑通过线段树维护上述过程:

由于 $ 1 \le n,a_i \le 2e5 $ ,考虑长度为 $ 2e5 $ 的序列 $ a $ 中所有元素都为 $ 2e5 $ ,一共进行 $ \log_ {2} {2e5} $ 次合并,出现的最大数不超过 $ 2e5 + 100 $ ,因此线段树的边界为 $ [1,2e5 + 100] $ 。

对于删除操作,查询 $ num $ 二进制下第 $ a_k + 1 $ 位至第 $ 2e5 + 100 $ 位之间,最靠近第 $ a_k $ 位的最大值 $ pos $ ,对 $ a_{pos} $ 进行单点修改,对 $ [a_k,pos - 1] $ 进行区间修改即可。

对于添加操作,查询 $ num $ 二进制下第 $ a_k + 1 $ 位至第 $ 2e5 + 100 $ 位之间,最靠近第 $ a_k $ 位的最小值 $ pos $ ,对 $ a_{pos} $ 进行单点修改,对 $ [a_k,pos - 1] $ 进行区间修改即可。

标签:le,二进制,题解,Professor,pos,2e5,num,CF1705E,100
From: https://www.cnblogs.com/ShawyYum/p/17870713.html

相关文章

  • 【ErikTse】2023-Codeforces新手训练营 第六期题解
    A.Wrath题目大意给你一个\(L\)数组和\(n\)个人,第\(i\)个人可以使用威力为\(L_i\)的闪电旋风劈击杀前面\(L_i\)人,问你最后能存活多少人?思路差分。开一个数组来标记当前威力的闪电旋风劈能击杀到的最远的人和使用技能的人,最远击杀的人所在的位置+1,自己的位置-1,这样算前缀和时所......
  • DBeaver连接PostgreSQL后只有默认数据库“postgres”不显示其他数据库的问题解决办法
    我们在使用DBeaver连接PostgreSQL后,发现数据库中只有“postgres”默认数据库,不显示我们自己创建的数据库。1、......
  • CF1896D Ones and Twos 题解
    题意:思路:先考虑不带修:如果长度为$n$的序列$a$中无$1$,当且仅当$2\les\lesum(1,n)$时,一定有解;否则,一定无解。通过$set$维护序列$a$中每个$1$的位置,找到最靠左的$1$的位置$l$以及最靠右的$1$的位置$r$。对于区间$[l,n]$,由......
  • ABC270F 题解
    和博客园一样好的体验思路首先看到花最小代价使得所有点连通,果断转换成最小生成树问题。接下来就要考虑怎么建图,首先陆地就正常连不用说,建机场和港口的代价貌似都是点权,考虑转成边权。因为一个点飞或者划船到另一个点要两重代价,所以若我们想让\(u\)和\(v\)建能飞过去的边,我......
  • P6859 蝴蝶与花 题解
    题意:有一个长度为$n$的序列$a$,其中所有元素都为$1$或$2$,要求进行$q$次操作,每次操作为以下之一:$A$$s$:询问是否存在$a$的连续子序列满足其中元素总和为$s$,若有合法的方案,输出这个方案的左右端点位置(多种方案时输出左端点最小的方案),否则输出$......
  • CF1835D Doctor's Brown Hypothesis 题解
    题目链接点击打开链接题目解法首先只有在一个强联通分量里的点对才可能合法,因此我们这里说的图默认为强联通图但是上面的条件成立只需要满足\(k\gen\),考虑用好\(k\)可以认为是极大的性质所以说我们可以通过图中所有的环\(+\)路径来凑出\(k\)不难发现,所有的环能构成的......
  • CF249题解
    CF249linkCF249ElinkCF249E题意给你一个形如下图的矩阵并有\(T\)组询问每组询问给出\(x_1,y_1,x_2,y_2\)。求\(\sum_{i=x_1}^{x_2}\sum_{j=y_1}^{y_2}A[i][j]\)。其中\(A[i][j]\)表示在矩阵中的数。\(T\leq10^5\)\(1\leqx_1\leqx_2\leq10^9\)\(1\leqy_1......
  • P7110 晚秋绝诗 题解
    好有意思的题目啊。出题人太厉害了。思路考虑一个结论:我们将两个没插旗的点与中间的点称为一段,其中中间的点必须全部插旗。那么这一段如果已知两座山的高度,就一定可以得知所有的高度。考虑为什么。加入这一段是\(a\simb\)。\[\begin{cases}h_a+h_{a+2}=2\timesh_{a+1}......
  • Advent of Code 2023题解 [Mathematica/Python]
    Day1Part1(*读取文件*)lines=ReadList["E:\\ExplorerDownload\input.txt",String];(*计算校准值*)calibrationValues=ToExpression[StringJoin[#[[1]],#[[-1]]]]&/@(StringCases[#,DigitCharacter]&/@lines);(*打印总和*)Pri......
  • CF1198题解
    CF1198CodeforcesRound576(Div.1)CF1198AlinkCF1198A题意有一种数字化一段录音的常用方式,是记录每一个时刻的强度值。这些非负的强度值就可以代表一段音频对于一段音频,若有\(K\)个不同的强度值,那么每一位我们都需要\(k=\lceil\log_2K\rceil\)\(\text{bit}\)来存......