首页 > 其他分享 >P3870 分块题解

P3870 分块题解

时间:2024-02-22 20:23:33浏览次数:30  
标签:暴力 分块 整块 sum 查询 题解 P3870 散块

这篇题解有点问题(分块标记处),但现在不想修,等有空修吧

link

分块是一种很神奇的暴力,学了它就会觉得什么都可以用分块做。

分块的主要思想就是整块快速查询,散块暴力查询。

比如说,分块可以在 \(O(q\sqrt{n}+n)\) 的时间复杂度内解决线段树模板题。

回到本题,显然我们可以用每个块维护内部有几个状态为 \(1\),修改与查询时暴力操作散块。

令 \(L_i,R_i,sum_i\) 代表第 \(i\) 个块的信息,起初 \(sum_i=0\)。

对于修改,我们发现对于整块存在 \(sum_i=R_i-L_i+1-sum_i\),而对于散块我们暴力修改,暴力更改 \(sum_i\)。

但是我们注意到一个问题,散块中的值可能之前被当作整块修改过,那时显然不可能具体修改每个状态,所以可能导致现在状态是错误的。

于是令 \(mark_i\) 代表第 \(i\) 个块之前被作为整块修改了多少次。

对于 \(a_i=0/1\),它的真实状态为 \(a_i\operatorname{xor} mark_{bel_i}\),容易发现这样修改是没有问题的。

对于查询,直接查询整块中的答案;而对于散块,暴力查询,注意异或上 \(mark_{bel_i}\)。

标签:暴力,分块,整块,sum,查询,题解,P3870,散块
From: https://www.cnblogs.com/BYR-KKK/p/18028072

相关文章

  • CF1372F Omkar and Modes 题解
    来个乱搞。思路考虑分治。对于最裸的暴力。我们可以调用solve(l,r)进行查询。假如这个区间的众数的出现次数是区间长度,那么可以直接退出,否则我们可以继续分治。我们把这个暴力进行加工一下。我们知道\(l\simr\)的区间众数后。查询\(l\simmid\)的区间众数,若完全......
  • CF1845F Swimmers in the Pool 题解
    思路考虑两个人什么时候会相遇。根据小学的相遇追及问题,两人会相遇的条件为:\[2\timesk\timesl=t\times(v1+v2)\]\[2\timesk\timesl=t\times(v1-v2)\]那么对于一个速度\(v\)。它可一相遇的次数即为:\[\frac{t\timesv}{2\timesl}\]当然,这样有可能会算重,也就是在相同......
  • 山海经(线段树)题解
    原题链接:COGS775题目描述:“南山之首曰鹊山。其首曰招摇之山,临于西海之上,多桂,多金玉。有草焉,其状如韭而青华,其名曰祝余,食之不饥……又东三百里,曰堂庭之山,多棪木,多白猿,多水玉,多黄金。又东三百八十里,曰猨翼之山,其中多怪兽,水多怪鱼,多白玉,多蝮虫,多怪蛇,名怪木,不可以上。……”(其实就......
  • 玉蟾宫 题解
    题目描述有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N*M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块......
  • P6466 分散层叠算法(Fractional Cascading) 题解
    题目链接:分散层叠算法比较妙的东西,在很多涉及到若干个有序块的\(kth\)查询的ynoi题中都有妙用。这里简单提提。两种暴力解法在其他文章已有涉及,在此不再赘述。讲讲具有该怎么写这个算法,首先我们需要预处理出新的\(k\)个序列,不妨记每个为\(M_i\)。\(M_{n}=L_n\),其中\(L\)......
  • [ABC259Ex] Yet Another Path Counting 题解
    Description有\(N\)行\(N\)列的网格图,只能向下或向右走,合法路径的开端和结尾的格子上数字一样找到合法路径条数,对\(998244353\)取模\(1\leqN\leq400,1\leqa_{i,j}\leqN^2\)。Solution有一个\(O(n^4)\)的做法是每次枚举起点和终点然后用组合数计算答案,但是由于同......
  • #根号分治,分块,dfs序#洛谷 7710 [Ynoi2077] stdmxeypz
    题目传送门分析首先把距离变成深度,用dfs序转成区间问题,考虑分块,散块直接改问题是整块,如果模数比较大,可以以深度为第一维下标差分标记,这样查询时就可以前缀和知道答案如果模数比较小,那么给该块打标记,查询时枚举模数即可,然后块长取1000,模数阈值取300,就能尽量减少时间代码#in......
  • 牛吃草 题解
    牛吃草居然真的是牛吃草Description由于现代化进程的加快,农场的养殖业也趋向机械化。lyz决定购置若干台自动喂草机来减少自己每天的工作量。为了简化问题,lyz决定将草地建模成一条线段,总长为\(n\),即共有\(n\)个单位长度,编号从左至右为\(1∼n\)。lyz可以在每个单位长度独......
  • blocks 单调栈、单调队列题解
    blocks题解:1、题面:2、分析:题意大概就是说,找一段最长的区间,并且这段区间的平均值>=k,那么我们可以对他的每一个值减去k,最终求和>=0即可。那我们需要对每个可能的左端点和右端点进行考虑,并以此让他们进行配对,看他们之间的区间和是否非负。那么我们先定住一个右端点,再依次考虑......
  • 理想的正方形 题解
    题目描述有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。输入格式第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。100%的数据2<......