[2021.1.17多校省选模拟4]T1
一般人都会想着去枚举直线的斜率,但是枚举斜率之后就会产生多条直线,并且这些直线的长度不一,难以快速求解,所以我们考虑换一种方法枚举。
枚举最远点对的横纵坐标之差,这样很容易计算这样的线段数量,然后这里就出现了含有gcd的式子,那么我们容易想到要莫比乌斯反演,通过交换枚举顺序就会得到一个较为好计算的式子。
关键在于枚举对象的选择!!!!!这种直线上的点我们枚举最远点的坐标差是最方便的方法。
所以最后问题只需要枚举d,然后枚举d的所有因数计算贡献即可,这样复杂度是O(nn)O(n\sqrt{n})O(nn)的,然后我居然傻了不知道怎么优化,这是一个显然的优化枚举因子的技巧,就是变为枚举倍数,然后我们可以将此题优化到O(nlogn)O(nlogn)O(nlogn)