lxl分块糊做
lxl分块糊做
[Ynoi2017] 由乃打扑克
me
想到了二分这个值+分块去找\(\leq\)这个数的数的数量,复杂度\(O(Q\log^2 N\sqrt N)\),然后块内可能用\(multiset\)或者啥来维护
tj
更优的做法是块内维护一个排好序的序列,不过硬要说和\(multiset\)本质确实一样,但是这样常数和写法上会优的多
CodeChef Chef and Churu
me
对函数的下标分块,然后对每个块内维护两个序列,一个以\(l\)从小到大排序,一个以\(r\)从大到小排序
然后修改时,可以把所有函数都\(+y-a_x\),然后再把那些\(r<x\)或\(l>x\)的函数的值\(+a_x-y\),有个很好的点就是这两个条件只会至多满足一个,这个就可以对于每个块算出块的答案,然后给两个序列的最后一个满足条件的挂上一个\(tag\)
查询的时候整块直接用存的那个值即可,散块就可以遍历块对应的两个序列,然后算\(tag\)的贡献
\(O(Q\sqrt N\log N)\)
tj
对下标分块,然后数组和函数都分块
函数查询\([l,r]\)可以变成查询\([l,n]-[r+1,n]\),于是可以给\([l,n]\)的数的\(tag+1\),\([r+1,n]\)的\(tag-1\),这个\(tag\)表示一个数的值被计算的次数
然后函数的块要维护整块的答案,查询到整块就用函数的块
查询到散块的时候,可以用数组的块来\(O(1)\)的查询
复杂度\(O(Q\sqrt N)\)
Luogu3863 序列
me
不会喵
tj
以下标为一个轴,时间为另一个轴,然后值为此时间下此下标上的值
可以发现修改是修改的一个矩形,查询的是一个区间
于是可以扫描线+分块维护
\(O(Q\sqrt N\log N)\)
「BZOJ2038」小 Z 的袜子
me
一开始一直在想分块,然后感觉分块不可做,突然想到为啥不离线呢,于是就是莫队板子
\(O(Q\sqrt N)\)
[AHOI2013]作业
me
莫队,然后再用个树状数组来记录答案
\(O(Q\sqrt N\log N)\)
tj
对值域也分块,就可以去掉\(log\)了
[Ynoi2016]这是我自己的发明
me
首先可以用\(dfn\)序把子树变成区间,然后一开始钦定\(1\)是根,如果后面根变成\(x\)的孩子\(y\)的子树中的一个点,对于\(x\),它的新子树区间就是整个区间除去\(y\)子树的区间
那么现在就相当于查询两个区间\([a,b]\)和\([l,r]\)的\(\sum c_{[a,b]}(i)\times c_{[l,r]}(i)\),于是可以类似于Luogu3863 序列,以一个查询为\(x\)轴,另一个为\(y\)轴,得到一个\(n\times n\)的矩阵,然后\(a_{i,j}=[col_i==col_j]\),查询即询问左下角为\((a,l)\),右上角\((b,r)\)的矩形的权值和
然后矩形的权值和可以用二维前缀和拆分成四个左下角\((1,1)\),右上角为\((x,y)\)的查询,那么原问题就被拆分成了许多个这样的查询,这个可以莫队维护
\(O(Q\sqrt N)\)
bzoj3920 Yuuna的礼物
me
区间查询可以莫队维护,然后\(k1\)可以数状数组/分块维护,\(k2\)可以\(set\)维护。。。?写的时候突然发现不行,幽默
tj
很牛!考虑用点来表示权值为\(v\)的点出现了\(k\)次,那么共有\(n\)个点,将这些点按照出现次数为第一关键字,权值为第二关键字排序,然后对这些点进行分块即可
\(O(Q\sqrt N)\)
[JOI2014] 历史研究(歴史の研究)
me
回滚莫队,\(O((N+Q)\sqrt N)\)
tj
回滚莫队是其中一个做法,还有普通莫队的做法
和bzoj3920 Yuuna的礼物类似,用点来表示权值为\(v\)的点出现了\(k\)次,那么共有\(n\)个点,将这些点按照\(v\times k\)排序,对这些点分块,那么用莫队维护区间,此时答案就是这\(n\)个点中,最靠后的存在的点
HNOI2016大数
me
就求区间内前缀余数相同的对数即可,莫队,\(O(Q\sqrt N)\)
tj
\(p=2/5\)的情况比较特殊,因为它们和\(10\)不互质
[IOI2009]regions
me
这怎么分块,都不让离线
tj
原来是根号分治,你说这个我就懂了嘛,幽默,根号分治算分块吗\(/fn\)
考虑当\(r_1\)或\(r_2\)中的某一个大小大于\(B\)时,因为最多只存在\(\frac nB\)个这样的地区,所以考虑预处理
预处理\(r_1\)时,若为地区\(V\),可以直接\(dfs\),然后\(cnt\)记录\(x\)的祖先中有几个属于地区\(V\)的,然后记录进\((V,a_x)\)
预处理\(r_2\)时,若为地区\(V\),依旧\(dfs\),记\(cnt\)为\(x\)的子树中有几个属于地区\(V\)的,然后记录进\((a_x,V)\)
这部分复杂度\(O(\frac{n^2}B)\)
然后若两个都大小小于\(B\),则考虑\(dfn\)序,若\(y\)是\(x\)的孩子当且仅当\(dfn_y\in[dfn_x,dfn_x+sz_x-1]\),那么考虑对地区\(r_1\)维护两个序列,一个以\(dfn_x\)排序,一个以\(dfn_x+sz_x-1\)排序,\(r_2\)维护一个以\(dfn_y\)排序的序列,那么对于\(r_1\)中的点\(x\),在\(r_2\)中合法的\(y\)的范围为第\(l\)个到第\(r\)个,那么\(x\)的贡献为\(r-l+1\),拆开成\(r+1\)和\(-l\),\(r+1\)由\(r_1\)的第二个序列负责,\(-l\)由第一个序列负责,然后双指针即可
复杂度\(O(QB)\)
因为\(N\)和\(Q\)同阶,所以\(B=\sqrt N\),总复杂度\(O(N\sqrt N)\)
SHOI2006 Homework
me
感觉对\(Y\)分块,然后通过什么性质每次\(X\)去更新\(Y\)的答案没啥出路,考虑每次对\(Y\)去找\(X\)
首先\(Y\leq B\)的,只有\(B\)个,这个可以每次用\(X\)去更新\(Y\)的答案
对于\(Y>B\)的,设\(X=k\times Y+r\),则只有\(\frac VB\)个\(k\),那么考虑对\(Y\)去找\(X\),枚举\(k\),找到\(\geq k\times Y\)的最小的\(X'\),然后答案取\(min(ans,X'-k\times Y)\),可以用分块做到\(O(1)\)查询,\(O(\sqrt V)\)维护
\(B\)取\(\sqrt V\),复杂度\(O(N\sqrt V)\)
[Ynoi2015] 此时此刻的光辉
me
对于\(c\leq B\)的,只有\(B\)个,预处理
对于\(c>B\)的,最多走\(\frac nB\)步,直接跳
\(O(N\sqrt N\log N)\)
tj
可以长链剖分做到\(O(1)\)求\(k\)级祖先,于是\(O(N\log N+N\sqrt N)\)
具体的大概就是对于每条长链,记录链顶向上的第\(k\)个点与链上第\(k\)个点,\(k\leq\)这条长链的长度
「Ynoi2015」 盼君勿忘
me
莫队维护区间,\(ans=\sum c_i\times(2^{len}-2^{cnt_i})\)
把\(cnt_i\leq B\)的放到一起,然后算答案的时候枚举\(cnt_i\)算即可
\(cnt_i>B\)的最多\(\frac nB\)个,这个单独算即可
\(O(Q\sqrt N\log N)\)
tj
优化了快速幂,用了光速幂,具体就是预处理出\(pw_i\),\(i\in[1,B]\),以及\(pw_{i\times B}\)
\(O(Q\sqrt N)\)
lxl分块糊做的更多相关文章
- POJ2104 K-th Number [分块做法]
传送:主席树做法http://www.cnblogs.com/candy99/p/6160704.html 做那倒带修改的主席树时就发现分块可以做,然后就试了试 思想和教主的魔法差不多,只不过那个是求 ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 分块
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...
- [BZOJ 2821] 作诗(Poetize) 【分块】
题目链接:BZOJ - 2821 题目分析 因为强制在线了,所以无法用莫队..可以使用分块来做. 做法是,将 n 个数分成 n/x 个块,每个块大小为 x .先预处理出 f[i][j] ,表示从第 i ...
- bzoj 2141 : 排队 分块
题目链接 2141: 排队 Time Limit: 4 Sec Memory Limit: 259 MBSubmit: 1169 Solved: 465[Submit][Status][Discu ...
- HDU 5663 Hillan and the girl (莫比乌斯反演 + 分块)
题意:给定n,m,求,其中F(x)=0,,如果x是完全平方数,否则是1. 析: 由于按照题意的F,不好筛选,所以我们反过来,F(x),x是平方数,就是1,否则是0. 这个是可以预处理出来的,可以用筛选 ...
- BZOJ 3744 Gty的妹子序列 (分块 + BIT)
3744: Gty的妹子序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1931 Solved: 570[Submit][Status][Dis ...
- Burpsuit分块传输插件绕WAF原理和技巧(转)
0x00 原理 给服务器发送payload数据包,使得waf无法识别出payload,当apache,tomcat等web容器能正常解析其内容.如图一所示 0x02 实验环境 本机win10+x ...
- 洛谷P2261 [CQOI2007] 余数求和 [数论分块]
题目传送门 余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod ...
- luogu P2617 Dynamic Rankings(分块,n <= 1e4)
嘟嘟嘟 带修改区间第k大. 然而某谷把数据扩大到了1e5,所以用分块现在只能得50分. 分块怎么做呢?很暴力的. 基本思想还是块内有序,块外暴力统计. 对于修改,直接重排修改的数所在块,时间复杂度O( ...
- BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块
Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们 ...
随机推荐
- ORB算法介绍 Introduction to ORB (Oriented FAST and Rotated BRIEF)
Introduction to ORB (Oriented FAST and Rotated BRIEF) 1. Introduction ORB(Oriented FAST and Rotated ...
- 什么是 CSS 设计模式
这是转载的,先收藏到我的博客园. 什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的 ...
- 学习unigui【18】unidbgrid的GridsGroupingSorting
折腾二天,你不按照demo里的代码来,就是没有效果.功力不够导致的.学习学习再学习!努力努力再努力! procedure TUniGridsGroupingSorting.UniDBGrid1Mult ...
- Flowable快速入门
flowable官方文档 官网:https://tkjohn.github.io/flowable-userguide/#_getting_started 工作流(Workflow),是& ...
- Jenkins持续集成 docker、gitlab、sonar
Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.Jenki ...
- 麒麟V10部署ROCEv2网卡配置步骤
以下是为麒麟服务器版V10配置RoCEv2的步骤: 第一步:确认硬件和驱动支持 在开始配置之前,首先要确保你的服务器硬件满足要求.通常需要Mellanox ConnectX系列网卡(例如mlx5系列) ...
- B站插入外站链接地址(现已禁用)
问题描述: B站中插入链接时,无法插入外站链接,提示[请输入正确的站内链接地址]: 日常文章编写中,经常需要插入外站链接跳转,以便于用户快速定位 分析: B站专栏文章编辑使用的富文本编辑器,应该是支持 ...
- Mouse Down鼠标操作指令的用法
如下图 暂无评论的按钮在整页下方,需要拖动页面才会显示出这个按钮,否则不可点击 Mouse Down 提供拖动页面的能提 这个方法因selenium2library和AutoItLibrary 都有 ...
- 2024.9.28总结(CF四题,差分)
上午 考了四道 CF 淼题. 下午 差分专题考,亖了.
- 银河麒麟系统 jenkins docker 部署 自动化打包部署git 项目
Jenkins 是一个开源的自动化服务器,主要用于实现 持续集成(CI) 和 持续交付/部署(CD),其核心作用在于通过自动化流程提升软件开发和交付的效率与质量 一.环境准备 1. 安装 Docker ...