两个比较好的资料:
oiwiki
原课件

oiwiki上讲得十分细致,而原课件上还讲了扩展。

最基本的问题是求 f(n,a,b,c)=i=1nai+bcf(n,a,b,c)=\sum\limits_{i=1}^n\lfloor\frac{ai+b}{c}\rfloor

这里注意其他的地方好多写的是 f(n,a,b,c)=i=0nai+bcf(n,a,b,c)=\sum\limits_{i=0}^n\lfloor\frac{ai+b}{c}\rfloor,而我认为从 11 开始的更加自然,后面细节就比较少了。

主要思想是把下取整的式子拆成 1\sum 1 的形式,然后交换求和号,把判断的式子转化一下,这样 a,ca,c 的地位就交换了,于是就成为一个欧几里得的形式(因为我们可以 (a,c)(a%c,c)(c,a%c)(a,c)\rightarrow(a\% c,c)\rightarrow(c,a\% c))。

其实这种思路在具体数学中求 i=1ni\sum\limits_{i=1}^n \lfloor\sqrt i\rfloor 的封闭形式时就用到了。当时觉得很妙,平常貌似没有这样化过求和式子。然而这种思路在OI中果然还是有用武之地的。

还有一个很诡异的事就是具体数学中提到的 i=0c1ai+bc=i=0a1ci+ba\sum\limits_{i=0}^{c-1}\frac{ai+b}{c}=\sum\limits_{i=0}^{a-1}\frac{ci+b}{a}:互反率,但是这个一点都不显然,根本不知道为什么啊QAQ,书中也只是推导出它的封闭形式之后发现 aacc 处于同等地位...也没有具体解释为什么会这样QAQ
upd:
啊我菜死了不动脑子
其实这玩意挺好理解的啊..我们先把下取整去掉看看,发现它们分别等于是 a(c1)2+b,fracc(a1)2+b\frac{a(c-1)}{2}+b,frac{c(a-1)}{2}+b,然后加上下取整之后前一个式子它们大概会分别减去 c(c1)2c,a(a1)2a\frac{\frac{c(c-1)}{2}}{c},\frac{\frac{a(a-1)}{2}}{a}。。这里是感性理解,具体证明只要 a,ca,c 除掉gcd之后就满足遍历完全剩余系,就得证了。。
主要还得再提一下扩展的问题:
f(n,a,b,c,u,v)=i=1niuai+bcvf(n,a,b,c,u,v)=\sum\limits_{i=1}^ni^u\lfloor\frac{ai+b}{c}\rfloor^v

可以发现oiwiki后面讲的扩展就是当 u,vu,v 为小常数时的情况,而它们是相互递归的。原课件里直接讲了这个更一般的形式。

f(n,a,b,c,u,v)=i=1niuj1[ai+bcj](jv(j1)v)f(n,a,b,c,u,v)=\sum\limits_{i=1}^ni^u\sum\limits_{j\geq 1}[\lfloor\frac{ai+b}{c}\rfloor\geq j](j^v-(j-1)^v)
然后因为 (j+1)vjv(j+1)^v-j^v 是一个 v1v-1 次多项式,所以这个问题也可以类似地缩小规模,具体推导直接看原课件咯

还有一些应用,看dh博客

啊这,但是dh博客里好像有挺多错误的啊...自己写一下咯

f(n,a,b,c)=i=1nai+bcf(n,a,b,c)=\sum\limits_{i=1}^n\lfloor\frac{ai+b}{c}\rfloor
f(n,a,b,c)=f(n,amodc,bmodc,c)+n(n+1)2ac+nbcf(n,a,b,c)=f(n,a \mod c,b\mod c,c)+ \frac{n(n+1)}{2}\lfloor\frac{a}{c}\rfloor+n\lfloor\frac{b}{c}\rfloor
m=an+bcm=\lfloor\frac{an+b}{c}\rfloor

f(n,a,b,c)=i=1nj=1m[ai+bcj]=i=1nj=1m[ai>cjb1]=j=1mi=1n[i>cjb1a]=nmf(m,c,b1,a)f(n,a,b,c)\\ =\sum\limits_{i=1}^n\sum\limits_{j=1}^{m}[\lfloor\frac{ai+b}{c}\rfloor\geq j]\\ =\sum\limits_{i=1}^n\sum\limits_{j=1}^{m}[ai>cj-b-1]\\ =\sum\limits_{j=1}^{m}\sum_{i=1}^n[i>\lfloor\frac{cj-b-1}{a}\rfloor]\\ =nm-f(m,c,-b-1,a)

里面运用了一些取整的性质。。如当 nn 为整数,xx 为实数时
x<nx<n,xnxn,x>nx>n,xnxnx< n\Leftrightarrow\lfloor x\rfloor < n,\\x \geq n\Leftrightarrow\lfloor x\rfloor \geq n,\\x>n\Leftrightarrow\lceil x\rceil > n,\\x\leq n\Leftrightarrow\lceil x\rceil \leq n

还要注意上面的推导变成 ai>cjb1ai>cj-b-1 的那一步其实是利用了两边都是整数,把 \geq 变成了 >>。于是这个式子只在 a,b,ca,b,c 都是整数时适用。在它们都是有理数时可以上下同乘一个数化为整数。
而在无理数时就有点棘手。这时有可能会满足 aicjbai\geq cj-b 这个式子永远不会取等。这时就可以直接变成 >>,也就是最后结果是向 f(m,c,b,a)f(m,c,-b,a) 递归。比如【清华集训2014】Sum这题就是这样。然而如果不满足永远不会取等的话,就有点麻烦了,我好像不会诶..(比如 a=2,b=52a=\sqrt 2,b=-5\sqrt 2

啊,还要注意的是如果存浮点数的话精度会爆炸,需要姿势正确一点..比如如果只含有 2\sqrt 2 的话可以表示成 a2+ba\sqrt 2+b

axmodp<c(x[0,n])ax\mod p<c(x\in [0,n]) 的数量..

i=0n[aiaipp<c]=i=0n[aicp<aip]\sum\limits_{i=0}^n[ai-\lfloor\frac{ai}{p}\rfloor p<c]\\ =\sum\limits_{i=0}^n[\lfloor\frac{ai-c}{p}\rfloor<\lfloor\frac{ai}{p}\rfloor]

然后因为它们最多相差 11,所以直接变成 f(n,a,p,p)f(n,a,pc,p)f(n,a,p,p)-f(n,a,p-c,p)(加上 pp 变成正数感觉比较好)