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\)这条长链的长度

题解 P5903 【【模板】树上 k 级祖先

「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分块糊做的更多相关文章

  1. POJ2104 K-th Number [分块做法]

    传送:主席树做法http://www.cnblogs.com/candy99/p/6160704.html 做那倒带修改的主席树时就发现分块可以做,然后就试了试 思想和教主的魔法差不多,只不过那个是求 ...

  2. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 分块

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...

  3. [BZOJ 2821] 作诗(Poetize) 【分块】

    题目链接:BZOJ - 2821 题目分析 因为强制在线了,所以无法用莫队..可以使用分块来做. 做法是,将 n 个数分成 n/x 个块,每个块大小为 x .先预处理出 f[i][j] ,表示从第 i ...

  4. bzoj 2141 : 排队 分块

    题目链接 2141: 排队 Time Limit: 4 Sec  Memory Limit: 259 MBSubmit: 1169  Solved: 465[Submit][Status][Discu ...

  5. HDU 5663 Hillan and the girl (莫比乌斯反演 + 分块)

    题意:给定n,m,求,其中F(x)=0,,如果x是完全平方数,否则是1. 析: 由于按照题意的F,不好筛选,所以我们反过来,F(x),x是平方数,就是1,否则是0. 这个是可以预处理出来的,可以用筛选 ...

  6. BZOJ 3744 Gty的妹子序列 (分块 + BIT)

    3744: Gty的妹子序列 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1931  Solved: 570[Submit][Status][Dis ...

  7. Burpsuit分块传输插件绕WAF原理和技巧(转)

      0x00 原理 给服务器发送payload数据包,使得waf无法识别出payload,当apache,tomcat等web容器能正常解析其内容.如图一所示 0x02  实验环境 本机win10+x ...

  8. 洛谷P2261 [CQOI2007] 余数求和 [数论分块]

    题目传送门 余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod ...

  9. luogu P2617 Dynamic Rankings(分块,n <= 1e4)

    嘟嘟嘟 带修改区间第k大. 然而某谷把数据扩大到了1e5,所以用分块现在只能得50分. 分块怎么做呢?很暴力的. 基本思想还是块内有序,块外暴力统计. 对于修改,直接重排修改的数所在块,时间复杂度O( ...

  10. BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块

    Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们 ...

随机推荐

  1. ORB算法介绍 Introduction to ORB (Oriented FAST and Rotated BRIEF)

    Introduction to ORB (Oriented FAST and Rotated BRIEF) 1. Introduction ORB(Oriented FAST and Rotated ...

  2. 什么是 CSS 设计模式

    这是转载的,先收藏到我的博客园. 什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的 ...

  3. 学习unigui【18】unidbgrid的GridsGroupingSorting

    折腾二天,你不按照demo里的代码来,就是没有效果.功力不够导致的.学习学习再学习!努力努力再努力! procedure TUniGridsGroupingSorting.UniDBGrid1Mult ...

  4. Flowable快速入门

    flowable官方文档       官网:https://tkjohn.github.io/flowable-userguide/#_getting_started 工作流(Workflow),是& ...

  5. Jenkins持续集成 docker、gitlab、sonar

    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.Jenki ...

  6. 麒麟V10部署ROCEv2网卡配置步骤

    以下是为麒麟服务器版V10配置RoCEv2的步骤: 第一步:确认硬件和驱动支持 在开始配置之前,首先要确保你的服务器硬件满足要求.通常需要Mellanox ConnectX系列网卡(例如mlx5系列) ...

  7. B站插入外站链接地址(现已禁用)

    问题描述: B站中插入链接时,无法插入外站链接,提示[请输入正确的站内链接地址]: 日常文章编写中,经常需要插入外站链接跳转,以便于用户快速定位 分析: B站专栏文章编辑使用的富文本编辑器,应该是支持 ...

  8. Mouse Down鼠标操作指令的用法

    如下图 暂无评论的按钮在整页下方,需要拖动页面才会显示出这个按钮,否则不可点击 Mouse Down  提供拖动页面的能提 这个方法因selenium2library和AutoItLibrary 都有 ...

  9. 2024.9.28总结(CF四题,差分)

    上午 考了四道 CF 淼题. 下午 差分专题考,亖了.

  10. 银河麒麟系统 jenkins docker 部署 自动化打包部署git 项目

    Jenkins 是一个开源的自动化服务器,主要用于实现 持续集成(CI) 和 持续交付/部署(CD),其核心作用在于通过自动化流程提升软件开发和交付的效率与质量 一.环境准备 1. 安装 Docker ...