分块
wJs9528-1
这个作者很懒,什么都没留下…
展开
-
HDU 4858 项目管理(点分块)
题意:给出一张图,两种操作 1.将点x加上权值y 2.询问与点x相邻点的权值和分析:将点分为重点和轻点,度数大于等于sqrt(m)sqrt(m)为重点,小于的为轻点,将重点和相邻重点连边,轻边和相邻所有边连边,得到规律,重点的答案是由周围重点和轻点对它的加成组成,而轻点答案直接由相邻点组成,复杂度 O(q∗sqrt(m))O(q*sqrt(m))#include<cstring>#includ原创 2016-10-09 17:29:22 · 652 阅读 · 0 评论 -
UESTC 1292 卿学姐种花 (分块)
题意:给出一个长度为n的序列,m次操作,操作分为两种: 1.在x的位置上加上数y,在x+1的位置加上数y-1,以此类推,一直到n或者y为0. 2.询问x位置上数字为多少分析:乍一看像是线段树,但是貌似又很难用线段树解决,主要是区间不好处理,而分块对于这类题目有优势,在区间上更容易计数,对于每个块,对于1操作,如果某个块全覆盖,记录两个值,增值和差值,通过加加减减就能得到答案,如果不是全覆盖直接s原创 2016-10-07 23:28:59 · 359 阅读 · 0 评论 -
CodeForces 551E GukiZ and GukiZiana (分块)
题意: 给出一个序列,两种操作 1.将区间[l,r]上的数加x 2.询问满足a[i]=x的下标中下标最大距离,即找到序列右边值等于x的下标和左边等于x的下标,输出差值,如果没有找到,输出-1 题解: 二分,妥妥的#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#in原创 2016-10-14 18:59:20 · 382 阅读 · 0 评论 -
CodeForces 13E Holes(分块)
题意: 有n个洞,每个洞有一个power值,表示进入这个洞的球能够被弹到i+power处,两种操作 1.将a洞的power改为b 2.询问从洞a开始放一个球,能被弹出的次数和最终位置题解: 分块处理,每个块中处理每个点被弹出这个块的位置和次数。 调整了一下块的大小,优化了500ms+#include<cstring>#include<string>#include<iostream>原创 2016-10-14 18:10:58 · 593 阅读 · 0 评论 -
CDOJ 1324 (分块样例)
简化题意: 单点更新某个值,区间查询最大值分块:首先将序列分成sqrt(n)sqrt(n)块,每个块中有sqrt(n)sqrt(n)个元素,更新O1O1,查询O(sqrt(n))O(sqrt(n))#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#include<algor原创 2016-09-28 18:33:19 · 363 阅读 · 0 评论 -
CodeForces 455D Serega and Fun (分块+双端队列)
题意:给出一个序列,两种操作 1.将区间[l,r]滚动一次 2.询问区间[l,r]中值等于k的数有多少个 在线分块之后,两种操作都能在sqrt(n)的复杂度内解决,将每个块都设置为队列,这样滚动起来非常方便一开始没有看到数值的范围,直接用的分块+bitset+双端队列,结果T了,后来看到了这一点,想写个分块+循环队列,结果发现编程复杂度太高..(好菜)…最终还是分块+双端队列…#include原创 2016-10-12 11:35:11 · 1667 阅读 · 0 评论 -
BZOJ 2957 楼房重建 (分块)
很容易观察到其实就是在找斜率的最长上升序列,分块之后直接处理斜率,怕有精度误差所以用的乘法做判断小于关系,加了一点小优化卡过去了 直接用double表示斜率貌似也可过/************************************************************** Problem: 2957 User: wsa Language: C++原创 2016-10-10 18:36:29 · 685 阅读 · 0 评论 -
ACdream 1738 世风日下的哗啦啦族I(分块)
题意:给出一个序列三种操作 1 a b 修改a妹子的裙子,变成b长度 2 l r 查询[l,r]区间的妹子最短的裙子长度,并输出有多少个妹子穿这个长度裙子的 3 l r t 输出[l,r]区间的妹子身穿裙子长度小于等于t的个数暴力分块,优化一下了二分#include<cstring>#include<string>#include<iostream>#include<queue>原创 2016-10-10 16:05:23 · 357 阅读 · 0 评论 -
HihoCoder 1236 Scores (五维偏序bitset+分块)
题意: 五维偏序问题,在给出的五维向量中,m次询问有多少个是完全偏序看了qsc大牛的代码才知道偏序问题还可以这样做… 大概是这么回事,对于每一维我们这样预处理它: 1.排序,分块 2.bitset存储下标状态,每个块的bitset存储前缀状态(方便后面询问处理结果) 对于每次询问,二分查找每一维对应的下标,那么这个下标前面所有的块都是答案,这样的得到的五个答案用bitset &操作一下就可原创 2016-10-09 21:02:42 · 1074 阅读 · 0 评论 -
CDOJ 1157 数列(seq) (分块)
题意:给出一个数列,两种操作 1.修改操作:把数列中第i个数改为x 2.询问操作:给定一个位置i,问数列中有多少个位置j ( j>i ),满足位置i与位置j间所有的数都不超过Ai与Aj的较大值。简单来说,操作2分为两部分 1.位置i右边相邻连续的比它小的数字个数 2.位置i右边不减序列长度 直接将数列分块,分块暴力维护和求解答案 第一部分询问做法:记录块中最大值为多少,如果整个块中值小于原创 2016-10-09 17:37:50 · 596 阅读 · 0 评论 -
HDU 4046 Panda (分块 或 线段树区间合并)
题面挺美的 题意:给出一个字符串,两种操作1.询问区间[l,r]内wbw有多少个(可重叠)2.将位置x的字符改为c 题解:分块和线段树都可以搞,分块很好解释,只需要单独处理边界问题。线段树区间合并需要将每次询问的区间拿出来单独处理一次。分块:#include<cstring>#include<string>#include<iostream>#include<queue>#include原创 2016-10-31 22:52:43 · 396 阅读 · 0 评论