摘要: 化成数学代数式就是这样: $$\sum_{x=a}^b\sum_{y=c}^d[\gcd(x,y)=k]$$ 根据差分的思想,可以将该式变成: $$\sum_{x=1}^b\sum_{y=1}^d[\gcd(x,y)=k]-\sum_{x=1}^{a-1}\sum_{y=1}^d[\gcd(x,y) 阅读全文
posted @ 2019-02-13 22:57 AC-Evil 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 这道题是数论题,所以需要一些变形。 考虑求所有$\gcd$的和,我们采用分组求解,也就是根据$i$和$N$的$\gcd$的值进行分组。 $$\begin{array}{ll}&\sum\limits_{i=1}^N\gcd(i,N) \\ = &\sum\limits_{d|n}d\sum\limi 阅读全文
posted @ 2019-02-13 22:35 AC-Evil 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 这道题是一道莫队题。对于每一种问法,就是查询对应的数是否在当前的区间内。 设$b[i]$表示莫队当前区间中有没有$i$这个数。 对于第一问“是否可以选出两个数它们的差为x”,也就是判断当$i-j=x$时是否存在$b[i],b[j]=1$。变形一下发现$i=j+x$,就成了$b[j],b[ 阅读全文
posted @ 2019-02-13 22:28 AC-Evil 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 不用管它随机什么的,就用贪心的思想去想, 会发现这道题的实质是:求查询区间众数出现次数。 莫队即可解决。 注意字符集1e9,要离散化处理。 阅读全文
posted @ 2019-02-13 21:49 AC-Evil 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 这道题的解法是莫队。莫队是一个离线的算法(也可以在线),能满足$O(1)$转移的算法。通过分块来获得适当的求解顺序使得复杂度控制在$O(n\sqrt{n})$。 阅读全文
posted @ 2019-02-13 21:32 AC-Evil 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 对于$l_i$、$r_i$的范围太大,我们离散化一下就可以缩到百万的范围了。 这道题要求花费最小。所以根据区间的长度排序,就可以转化成单调性的问题了:选取一段区间,使得这些区间的覆盖存在一个点被覆盖$\geq M$次。 于是维护一颗线段树,然后维护选取区间的开头和结尾,加入区间时将线段树对应的区间修 阅读全文
posted @ 2019-02-13 13:12 AC-Evil 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 这道题要明白摩尔投票法,详见[洛谷P2397]yyy loves Maths VI (mode)。 还有一个就是可加性。 所以我们可以用线段树维护区间过半数。 但是不一定就过了半,所以再往平衡树里面查下。 平衡树要开很多棵,对应的平衡树中存放对应数的位置。 然后查询某个数在区间$[l,r]$中出现次 阅读全文
posted @ 2019-02-13 13:01 AC-Evil 阅读(220) 评论(0) 推荐(0) 编辑