首页 > 其他分享 >分块

分块

时间:2023-12-14 16:22:44浏览次数:14  
标签:前缀 分块 整块 值域 区间 根号

写一点。

数列分块入门6,主要是定期重构,如果数列的形态改变的话,那么设定阈值为每至少 \(\sqrt n\) 次操作做一次重构,时间复杂度是直接根号的。

数列分块入门8,主要是势能分析(好像是),统计一个区间的最大值和最小值,这个是容易统计的,然后你考虑一个区间询问有多少个相同的,对于最大值和最小值有疑问的就暴力扫一下否则就不管了,然后区间赋值,中间整块势能没了,旁边的加1

数列分块入门9,考虑离散化之后我们可以预处理出从第 \(i\) 个整块到第 \(j\) 个整块之间的众数,而区间询问的误差在于旁边的散块,于是我们考虑对于每个颜色我们先把散块的拉满然后再把整块区间的拿下,然后和预处理的整块答案比较一下取优的就行。

P4119未来日记,考虑先看询问再看修改,询问问区间k小,其实这个东西是很经典的问题了,但是这个修改就搞得挺难受的,考虑对于每个整块也做一个值域分块,然后每次相当于是在值域上面做 \(\sqrt n\) 次单点修改,这样维护值域之后能做什么?

我们考虑求第 \(k\) 大一直有一个很传统的方法就是直接二分答案后问排名,我们把这个套用过来,一段区间内的这个排名,我们考虑散块直接暴力问,整块的话我们统计一个值域分块上的前缀表示在这个区间内这个权值的数的数量(因为这个可减),但是我们做了二分之后不能直接求吧,对这个值域我们还得求个前缀和,如果要在这个修改的基础上维护前缀和的前缀和单log很难做到,但是可以直接值域分块,然后求一个的时间复杂度降为根号,而修改操作因为要修改后面的前缀和,这个随便拿个数据结构来维护就好了。

但是这个散块没法维护啊,实际上作为一个单点直接向上面那样维护就好了,时间复杂度根号带log。

upd:果然水平还是太低,根号log算法过不了啊!

考虑kth其实有一个根号做法就是对值域分块后枚举整块然后枚举散块可以做到单次根号(这个是真没想到,看题解了才发现,知道这个后面的就全都明白了),但是我们这个没办法这么做,我们有整整根号次修改,对块内的倒是影响不大,块外的就闹翻了,不过其实问题也不大,因为每次都只会动两个权值的前缀和,那么对这两个权值所在的块重做前缀和时间复杂度只有根号,这样两边时间复杂度都降下来了。

upd:果然水平还是太低,没考虑标记问题

刚开始的思路是并查集维护代表权值然后似了,考虑这个东西只要一合并就拆不开了,或者说难得拆开,所以每次如果没出冲突就不管出了就重构的时间复杂度是正确的。

然后就是卡常,卡了一上午加半个下午才过。。

那再来开一下P4118末日三问好了,区间加和区间最大子段和。

先来想想看,分块咋解决区间最大子段和问题,这个其实挺简单的,就像正常dp一样维护就好了。

那么我们要做的就是动态维护以块端点为分界点的往左往右的最大值。

但是还要做区间修改,散块倒是可以直接维护,整块的就有点乏力话说如果这个有办法直接维护我为啥不直接进行线段树,感觉还是不太可行。

那我们回到最开始,我们要想一个分块维护区间最大子段和的方法。

我们分块是能做的当且仅当分块之后可以对整块快速处理。

也就是说对整块的快速处理,

标签:前缀,分块,整块,值域,区间,根号
From: https://www.cnblogs.com/kisara-no-inu/p/17895976.html

相关文章

  • asp.net core 多文件分块同时上传组件
    分享一个可多个文件同时上传、断点续传,并实时反馈上传进度的Asp.Netcore组件。服务器端引用nuget包:JMS.FileUploader.AspNetCore然后启用上传组件:app.UseAuthorization();app.MapControllers();//启用上传组件,并限制单个文件......
  • SpringBoot+Vue实现大文件分块上传
    1.项目背景由于用户需求,需要上传大量图片,只能通过上传压缩包的形式上传,可是压缩包过大时,又会出现上传超时的情况,故需要将压缩包分块上传,然后解压缩图片、若图片过大则再对图片进行压缩。2.分块上传分块上传我在用的时候发现有两种:第一种:分块合并接口全由后端接口生成;第二种:前端......
  • 分享一个 asp.net core 多文件分块同时上传的组件
    分享一个可多个文件同时上传、断点续传,并实时反馈上传进度的Asp.Netcore组件。服务器端引用nuget包:JMS.FileUploader.AspNetCore然后启用上传组件:app.UseAuthorization();app.MapControllers();//启用上传组件,并限制单个文件最......
  • 数论分块
    前言数论分块我实际上在2021年的暑假就已经接触过了,当时是当成了定理来记,所以现在忘得也差不多了。最近决定重温(从零开始重修)数论分块,利用坐地铁的时间看了几篇关于数论分块的博客文章(源自《洛谷日报》),感觉有些讲得不是非常详细,质量参差不齐。有些往往只放几个性质,然后将结论直......
  • 算法随笔——分块
    介绍分块的基本思想是通过适当的划分和预处理,用空间换时间,更加接近朴素算法,是一种暴力数据结构。例题1例如最经典的区间修改区间查询,若用树状数组来做就显得过于麻烦了。而用线段树做这道题,虽然通用,但马亮比较大,非常不友好。于是一种\(O(nlogn)\)的解法出现了——分块。思路......
  • 分块模型
    分块是一种暴力做法的优化。基本思想是把要操作的对象分为根号n份,然后按份进行操作。模板题:  #include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e5+10;structNode{intl,r;LLsum,lazy;}blk[N];intn,m;......
  • 分块
    分块是一种码量较小,复杂度相对优秀的算法。可以参考OIwiki上对分块的介绍。例题引入:P3870[TJOI2009]开关这道题用来介绍分块的基本操作。首先题意非常明确,需要维护区间求和、区间取反两种操作,暴力修改查询的话,单次需要\(O(n)\)。我们可以将\(sz\)个连续的灯划为一个块......
  • 单文件WebUploader做大文件的分块和断点续传
    前言:WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS6+,android4+。两套运行时,同样的调用方式,可供用户任意选用。 上面......
  • 整数分块
    整数分块(真的会考吗)对于形如\(\sum_{i=1}^{n}\lfloorx/i\rfloor\)的式子,我们有这么一个\(O(\sqrtn)\)的做法别管证明了,我已经不是很记得了,反正形式很简单for(intl=1,r;l<=n;l=r+1){if(k/l!=0)r=min(k/(k/l),n);elser=n;sum+=(r-l+1)*(k/l);}当......
  • 树套树板子,但是带修莫队+值域分块
    \(\text{Link-LuoguBlog}\)原题传送门没啥重要的事情,就是终于过了这题非常开心,发现自己是莫队的时间戳部分写错了调了114514年我也只能说是十分趣味。以及今天深刻地认识到了带修莫队应该len=pow(n,0.66);。就是裸的带修莫队+值域分块,就不说了,直接放代码了昂。如果有人......