
分块
CHN_JZ
爆0 forever
展开
-
[水题]BZOJ 1257——[CQOI2007]余数之和sum
题目描述给出正整数n和k,计算kk modmod 1+k1 + k modmod 2+k2 + k modmod 3+…+k3 + … + k modmod nn的值。解题思路先把k mod n看成k−n∗n/kk-n*n/k显然对于n/k相同的n形成了一个区间,区间的范围就是n/(n/k+1)+1n/(n/k+1)+1~n/(n/k)n/(n/k)区间的个数显然不超过n√\sqrt n个。然后乱搞原创 2017-08-20 16:07:41 · 667 阅读 · 0 评论 -
[分块]BZOJ 4216——Pig
题目梗概给定一个数组。多次询问一个区间的和。解题思路这不是SB题你要想想这是BZOJ的题目,请忽略A+B。你没有足够的空间构造前缀和,但是你能存储下这个数组。那就只能用分块了。#include<cmath> #include<cstdio> #include<algorithm> #define LL long long using namespace std; inline int _read()原创 2017-08-15 21:28:02 · 633 阅读 · 0 评论 -
51Nod 1674——区间的价值 V2
题目梗概给出一个n个数。 求所有区间的贡献的加和。 一个区间的贡献:所有数的andand值∗*所有数的oror值。解题思路首先我们要知道对一个数一直andand或者oror操作减少或增加的次数是log级别的,这个看成二进制之后就很好思考。这样我们马上就能想到枚举一个端点,然后维护log段相同的线段(and和or显然需要分开维护)。考虑加入一个新的节点。 只需要把每个线段加入一个节点,合并值相同原创 2017-09-05 21:08:43 · 527 阅读 · 0 评论 -
[分块]51 Nod——1225 余数之和
题目梗概例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果即可。解题思路x%y运算其实可以看成x−x/y∗yx-x/y*y,这里的除是整除。那么对于整除x等于固定值的数我们可以一起统计,这些数显然是一个区间,我原创 2017-10-20 20:36:35 · 846 阅读 · 0 评论