首页 > 其他分享 >P6859 蝴蝶与花 题解

P6859 蝴蝶与花 题解

时间:2023-12-01 16:11:44浏览次数:33  
标签:val 蝴蝶 题解 sum 端点 区间 pos2 P6859 pos1

题意:

有一个长度为 $ n $ 的序列 $ a $ ,其中所有元素都为 $ 1 $ 或 $ 2 $ ,要求进行 $ q $ 次操作,每次操作为以下之一:

  1. $ A $ $ s $ :询问是否存在 $ a $ 的连续子序列满足其中元素总和为 $ s $ ,若有合法的方案,输出这个方案的左右端点位置(多种方案时输出左端点最小的方案),否则输出 $ none $ 。

  2. $ C $ $ i $ $ val $ :将 $ a_i $ 改为 $ val $ $ ( $ $ val $ ∈ \(\{\) \(1\) ,\(2\) \(\}\) \()\) 。

思路:

  • 先考虑不带修的情况:

我们将左端点设为 $ l = 1 $ ,二分查找前缀和第一次大于等于 $ s $ 的位置 $ pos $ 设为 $ r = pos $ 。

当 $ sum(l,r) = s $ 时,区间 $ [l,r] $ 即为最终答案。

当 $ sum(l,r) > s $ 时,由于 $ a_i $ ∈ \(\{\) \(1,2\) \(\}\) ,那么一定满足 $ a_r = 2 $ 且 $ sum(l,r) = s + 1 $ 。当 $ a_1 = 1 $ 时, $ sum(l + 1,r) = s $ ,那么区间 $ [l + 1,r] $ 即为最终答案;当 $ a_1 = 2 $ 时,右移左端点 $ l $ ,$ l = l + 1 $, $ sum(l,r) = s - 1 $ ,右移右端点 $ r $ , $ r = r + 1 $ ,如果 $ a_r = 1 $ ,那么区间 $ [l,r] $ 即为最终答案;如果 $ a_r = 2 $ ,重复以上过程,直至 $ a_l = 1 $ 或 $ a_r = 1 $ ,那么区间 $ [l + 1,r] $ 或区间 $ [l,r] $ 即为最终答案;否则无解。

考虑以上过程,实际上是查询左端点 $ l $ 右侧最靠左的 $ 1 $ 的位置 $ pos1 $ 以及右端点 $ r $ 右侧最靠左的 $ 1 $ 的位置 $ pos2 $ ,由于 $ a_i $ ∈ \(\{\) \(1,2\) \(\}\) ,可以通过线段树维护区间最小值的位置来获得 $ pos1 $ 和 $ pos2 $ ,然后判断是否满足 $ a_pos1 = 1 $ 以及 $ a_pos2 = 1 $ ,进而可能产生两个可行区间 $ [pos1 + 1,r + pos1 - l] $ 以及 $ [l + pos2 - r,pos2] $ ,其中左端点较小的即为最终答案。

  • 再考虑带修的情况:

通过线段树维护区间最小值的位置即可。

标签:val,蝴蝶,题解,sum,端点,区间,pos2,P6859,pos1
From: https://www.cnblogs.com/ShawyYum/p/17869945.html

相关文章

  • 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}\)来存......
  • [AGC052B] Tree Edges XOR 题解
    题目链接点击打开链接题目解法怎么感觉这场\(B\)比\(C\)思维量更大考虑一步很妙的操作:把边权变成点权,以达到简化操作的目的使每条边的边权为两端点的异或和,手画一下可以发现,操作简化成了交换两端点的点权我们定义\(d_{1/2,i}\)定义为在\(1/2\)树上,\(i\)到根的权值......
  • CF1684题解
    CF1684CodeforcesRound792(Div.1+Div.2)CF1684AlinkCF1684A题意有一个用十进制表示的没有前导零的正整数\(n\)。Alice和Bob正在用这个数玩一个游戏。Alice先手,他们轮流进行游戏。在她的这一轮中,Alice应该交换这个数中的任何不同位置的两位。轮到Bob时,他每次......
  • [AGC052C] Nondivisible Prefix Sums 题解
    题目链接点击打开链接题目解法好题!一个序列是不合法的,必定满足某些结论,我们不妨猜测一下首先如果和为\(P\)的倍数,必定不合法然后手玩几个可以发现,最极限的情况是\(P-1\)个\(1\;+\;\)\(b_i\;+\;\)\(P-b_i\)如果在这个情况下再加一个\(1\),就爆了其中\(1\)可以替......
  • CF689题解
    CF689CodeforcesRound361(Div.2)CF689AlinkCF689A题意题目描述迈克在海滩游泳时不小心将手机放入水中。他买了一个带有老式键盘的手机。键盘只有十个数字大小的键,位于以下方式:1234567890联系人与他的旧手机一起消失了,他现在只能记住他的手指......
  • 商家转账到零钱全攻略:开通、使用、区别与常见问题解答
    一、商家转账到零钱功能介绍微信作为中国最受欢迎的社交平台之一,其支付功能也相当强大。其中,商家转账到零钱功能可以让商家直接将款项转入用户的微信零钱,方便快捷。本文将详细介绍商家转账到零钱的功能、开通条件、使用方法以及常见问题解答。二、商家转账到零钱场景说明商家转......