分块
litble
Away From OI已久,一天天变菜中,博客平时不咋看,也没能力答疑和改错了,因此不会互动见谅orz
展开
-
蒟蒻的分块入门
前言发现分块这个东西已经渗透到经济生活的各个领域(大雾),所以我不得不学些简单的分块技巧,否则会被同机房的jar形绕懵圈的。解析首先%%%%hzwer: http://hzwer.com/8053.html对于一个有n个元素的数列,我们把它拆碎了,拆成除了最后一块以外,每块都是k的n/k(或许要+1)个块。这样对于某些块,我们可以整块操作,优化时间。例题:洛谷P3372原创 2017-04-04 22:18:00 · 933 阅读 · 2 评论 -
codevs5037 分块
题目分析首先,这题虽然叫做线段树练习4,但是好像不能用线段树做?可能也是我太弱了,树王大佬应该就能用线段树做吧。 那么这题最好用的数据结构是分块! 好吧我不说了,解析都在代码里。代码#include<cstdio>#include<iostream>#include<cmath>using namespace std;#define ll long longint read(){原创 2017-06-29 16:08:41 · 294 阅读 · 0 评论 -
神奇的莫队(含树上莫队)
例题基本上是洛谷上的编号,bzoj上的编号请自行寻找….. 有木有和我一样比较稀饭洛谷的……普通莫队莫队是一种很暴力的算法…… 是一种基于分块思想的算法……. 莫队的思路是把询问排序之后处理可以优化时间复杂度降低~~ 大家都知道当前的l−rl-r的这个区间已经处理出来了,之后求l′−r′l'-r'这个区间,就可以用|l′−l|+|r′−r||l'-l|+|r'-r|的复杂度求出来,所以只要排原创 2017-06-01 15:05:05 · 1503 阅读 · 0 评论 -
bzoj3337 块状链表的各种操作
题目分析在我做这道题之前,我一直以为维护数列已经是很BT的数据结构板子题了,现在发现我错了…… 本蒟蒻的最长代码记录,甚至超过了立体八数码那道题。所以为了图代码更简洁,本蒟蒻牺牲了一些常数,所以这代码常数很大…… 我们来分析一下各种操作吧(想看完整代码请直接翻到最下面) 好的,我们建立块,需要维护一些什么呢?原数组a,一个排序后的数组b,一个翻转标记rev,一个赋值标记same,一个块的大小s原创 2018-01-04 15:20:00 · 611 阅读 · 0 评论 -
51nod 1597 有限背包计数问题 DP
将[1,n][1,\sqrt{n}][1,n]和[n+1,n][\sqrt{n}+1,n][n+1,n]的物品分开考虑。对于[1,n][1,\sqrt{n}][1,n]的物品,只有n\sqrt{n}n个,我们令f(i,j)f(i,j)f(i,j)表示前iii个物品选jjj个的方案数。那么有:f(i,j)=f(i−1,j)+(f(i,j−i)+f(i−1,j−i∗(i+1)))f(i,j)...原创 2018-09-22 16:35:08 · 316 阅读 · 0 评论 -
二次离线莫队
例题:洛谷 P5047题面图上的妹子好可爱啊(ˉ﹃ˉ)多组询问,求一个区间内的逆序对数,离线,n≤105n \leq 10^5n≤105,时限0.3s,空间限制32MB (好,不愧是lxl)二次离线莫队如果直接用莫队做这道题的话,每次移动都要来一遍树状数组,复杂度就是O(nnlogn)O(n \sqrt{n} \log n)O(nnlogn)的了。记([l1,r1],[l2,r2])...原创 2019-05-22 08:46:59 · 1993 阅读 · 0 评论 -
bzoj3636 教义问答手册 分治
题目分析分块一种虽然过不了但是很喵的做法。设f[l,r]f[l,r]f[l,r]表示区间[l,r][l,r][l,r]的答案。bib_ibi表示区间[i−L+1,i][i-L+1,i][i−L+1,i]的权值和。则有f[l,r]=max(f[l,r−1],f[l,r−L]+br)f[l,r]=max(f[l,r-1],f[l,r-L]+b_r)f[l,r]=max(f[l,r−1],...原创 2019-05-23 11:03:00 · 431 阅读 · 0 评论