【集训队模拟赛 2013】Banner

来源:互联网 发布:淘宝刷关注软件 编辑:程序博客网 时间:2024/05/22 08:10

题目大意

问在nm的点阵上,满足除端点外不经过其他点,且长度在[l,r]范围内的线段有多少条。
n,m<=100000
l,r<=15000


分析

这道题刚开始做的时候一直在往数论方向想,可是并没有搞出来。
其实互质这个条件不一定要用数论方法,也可以用容斥做。
这个问题可以转化成为ans(x<=r)ans(x<=l)+ans(x=l),其中x为线段长度。
ans(x=l)只需要稍微枚举一下就可以了。
那么考虑ans(x<=lim)怎么做。
ans(x<=lim)=lim1i=1[(ni)j2+i2<=lim2,(j,i)=1(mj)]
第一个只需要枚举就可以了,第二个首先可以算出j的取值上限,那么问题就转化为了求lim1j=1,(i,j)=1(mj),用容斥算,(i,j)=d的答案贡献大致上是一个等差数列求和,可以O(1)算,那么这道题就基本上完了。

0 0
原创粉丝点击