分块
HermioneL
年轻的好处在于,你还没有太多经验,并天生相信一切皆可能。
展开
-
BZOJ 1257 [CQOI2007]余数之和
题目在这里呀!题解一道会杜教筛或者分块的人都应该会写的题啦。 首先考虑简单简单版: ∑i=1n⌊ni⌋ \sum_{i=1}^n \lfloor \frac{n}{i} \rfloor 这个问题我们直接对⌊ni⌋ \lfloor \frac{n}{i} \rfloor 分块即可。那么很好转换到这个问题, ∑i=1nnmodi=∑i=1n(n−⌊ni⌋∗i) \sum_{i=1}^n n原创 2018-04-24 22:54:07 · 245 阅读 · 0 评论 -
51nod 欧拉函数之和
题目在这里呀! 跟上面一题一样,也是杜教筛的基础题。 推导也跟上面一题基本一样。 for(int i=1;i φ*1=id 所以呢ans=n*(n+1)/2。 同样的, for(int i=1;i<=n;i++) for(int j=1;j 后者的ans也等于n*(n+1)/2,不再解释了。 同样把i=1的单独拿出来通过移项就可以得到 Σi=1~n φ(i) =原创 2018-03-05 10:45:27 · 240 阅读 · 0 评论 -
51nod 莫比乌斯函数之和
题目在这里呀! 最近学了一下杜教筛,emm随便写个题解啦,把模板放上来而已ww 我觉得这篇博客讲解的很清晰qwq 简单讲一下,首先对于1到n的每个数i,d为i的约数,将mu[d]求和,和为1。 换句话说就是 for(int i=1;i ans的值为1,为什么呢,μ*1=(n==1 ? 1 : 0)也就是epsilon 然后,可以发现上式也等于 for(int i=1;i原创 2018-03-05 10:20:00 · 328 阅读 · 0 评论 -
BZOJ 3944 Sum
题目在这里呀 前两题结合起来就是这题 (把一些memset都去掉就不T了?! //Suplex #include #include #include #include #include #define N 2000000+500 #define ll long long using namespace std; const int mod=1000007; cons原创 2018-03-05 10:48:02 · 188 阅读 · 0 评论 -
BZOJ 2956 模积和 (分块)
题目在这里呀!题意BZOJ 1257的加强版,多了一个?那就把它展开来啦。 ∑i=1n∑j=1m(nmodi)∗(mmodj)(i!=j) \sum_{i=1}^n \sum_{j=1}^m (n mod i)*(m mod j) (i!=j) =∑i=1n∑j=1m(nmodi)∗(mmodj)−∑i=1n(n−⌊ni⌋∗i)∗(m−⌊mi⌋∗i)=\sum_{i=1}^n \sum_{j=1原创 2018-04-24 23:17:00 · 200 阅读 · 0 评论