分块
文章平均质量分 54
samjia2000
I swear...
We are INFINITE.
展开
-
【NOIP2013模拟联考13】线段
题目大意一开始有一个全部为1的无限长的序列,有两种区间修改的操作,一个是给区间内的数都乘上ww,第二个是给区间内的数都取ww次幂,只有一种询问,询问区间内的数的乘积。解法一离散化之后用线段树维护一个区间的数的乘积,还有两个懒标记(懒标记应该都懂,我就不说了,不懂的就看 http://ju.outofmemory.cn/entry/99351),一个是乘上的数,一个是取多少次幂,作乘积操作时直接修改乘原创 2015-08-24 11:52:21 · 715 阅读 · 4 评论 -
COCI2012 round 2 INSPEKTOR 查税
这是这个博客的第一篇文章,我打算写一下这道使用我以前没有打过的算法的题目。 题目大意:有n个位置,每个位置上有一个信息,包含t,z,s,有两种操作,一是更改一个位置上的信息,二是给出一个T,询问L到R区间内(T−t)×z+s(T-t)\times z+s的最大值。普通暴力算法:显然可知,直接暴力,操作一的复杂度是O(1)O_{(1)},操作二的复杂度是OnO_{n},于是我们可以优化暴力打暴力的正原创 2015-08-11 18:23:48 · 737 阅读 · 1 评论 -
[Hnoi2010]Bounce 弹飞绵羊
题目大意从左到右有n个位置,在第i个位置会被弹到第i+a[i]个位置,超出范围则挂掉,有q个操作,一种是更改某一位置上的a[i],一种是询问第i个位置什么时候会挂掉分块设f(i)为i在其块内最少跳多少次会跳出这个块,而g(i)表示他跳出块后会跳到哪个点,于是修改时我们可以重构块,询问时就一个一个块跳。时间复杂度O(nn√)O(n\sqrt n)LCT很容易发现,如果我们把跳出去都记为跳到n+1,那么原创 2016-06-30 15:30:59 · 382 阅读 · 0 评论 -
[Hackerrank Week of Code 30]Range Modular Queries
题目大意给出一个序列a[1..n] q个询问形如”l r x y”问a[l..r]中a[i]modx=ya[i]\mod x=y的个数 1≤n,a[i]≤400001\le n,a[i]\le 40000题解对于x≤200x\le200,将a[]分成n√\sqrt n块,预处理s[i][x][y]s[i][x][y]表示前i块中模x等于y的数的个数,然后询问时可以直接用s和暴力查询多出的部分,一原创 2017-03-17 22:13:01 · 456 阅读 · 0 评论