随笔分类 - 分块
摘要:【问题描述】 Mark Douglas是一名优秀的锻造师。与他优秀的锻造水平不相符,他非常穷,以至于很多好刀都因为缺少素材缺少资金无法打造。 Mark把他有能力锻造的所有n种刀建成了一棵锻造树,除了第1种刀可以直接打造以外,其他的刀都只能从某一种刀加工而来。具体而言,第i种刀只能从第fai种刀加工而
阅读全文
摘要:分块,是一种优雅的暴力,它通过对数列分段,完成对数列一些区间操作和区间查询的操作,是一种根号算法。 分块的功能: 1.区间加;2.区间减;3.。。。。。。 4.查询区间和 3.查询任意区间内有多少个数大于等于k(注意,这个功能是我们使用分块而不选择线段树的重要依据) 在我的分块中,block表示原数
阅读全文
摘要:题面 刚看到这道题的时候用了个树状数组优化前缀和差分的常数优化竟然AC了?(这数据也太水了吧~) 本人做的第一道分块题,调试了好久好久,最后竟然没想到二分上还会出错!(一定要注意)仅此纪念;
阅读全文
摘要:题面 很裸的边取模边乘。注意因为进位的原因模数应该比较大; 另外,这道题是一道标准的分块打表例题(那样的话数据就可以更大了),可以用来练习分块打表;
阅读全文
摘要:这是基于分块的思想: 分块打表的思想:提前在计算机计算好一部分的值,例如:提前计算好N mod1000000 = 0的值的数据,然后运算时直接取出对于的值开始运算,如:N = 2000001的时候,就取出2000000的值接着运算,减少运算量。 最优的情况下,可以处理sqrt(N)的表,然后以sqr
阅读全文
摘要:题面 这道题是一道整除分块的模板题; 首先,知道分块的人应该知道,n/i最多有2*sqrt(n)种数,但这和余数有什么关系呢? 注意,只要n/i的值和n/(i+d)的值一样,那么n%i到n%(i+d)的值就是一个等差数列!因为n/i=n/(i+1)*(i+1)=n/i*(i+1)=n/i*i+n/i
阅读全文
摘要:求1~n的n/i的总和: 我们会发现:总会有很多的(n/l)~(n/r)的值是重复的,所以我们可以寻找这样的区间; 即:n/i=n/(i+d) 我们要干的就是在O(1)的时间复杂度内找出这个d
阅读全文

浙公网安备 33010602011771号