CF 257Div.1 E (449E)

来源:互联网 发布:java项目架构设计 编辑:程序博客网 时间:2024/04/28 06:04

Description:

      在平面直角坐标系中,四个端点为 (x,y),(x+1,y),(x,y+1),(x+1,y+1) 的正方形称为单位正方形。之后我们考虑所有端点在 (0,0)(N,M) (N,M<=106)范围内的正方形,所有被其包含完全包含的单位正方形,都会被放上一个标记,问一共被放了多少个标记。
      
      
      

Solution:

      
      由对称性不妨设 N<=M 首先考虑如下绿色正方形:square.png
      令我们令外面的正方形的边长为 L ,中间画出的小三角形的竖直边为 i ,设其对答案的贡献为 f(L,i),那么:
      

f(L,i)=(L2i)2+2[i(Li)L+gcd(i,L)]=L22iL+2i2+2gcd(i,L)

      那么 ANS=min(N,M)L=1(NL+1)(ML+1)Li=1f(L,i)

                        =N)L=1(NL+1)(ML+1)Li=1L22iL+2i2+2gcd(i,L)

                        =NL=1[(N+1)(M+1)+(N+M+2)L+L2]Li=1L22iL+2i2+2gcd(i,L)

      Li=1gcd(i,L)=i|Liφ(Li),所以我们可以很容易的求出这些前缀和。之后我们只需要求出 ANS 表达式中的所有项的前缀和然后做到 O(1) 询问就行了。

0 0
原创粉丝点击