计数问题确实是短板qaq
这个可以先求出符合要求的L,可以通过枚举顶点来求,然后就是求n,m里面互质数的对数,这个其实可以暴力预处理(一开始还想着用反演)。。
然后把总数平方后再减去交叉部分就是答案了。。。
交叉的情况其实很少,就3种
一种是同一个顶点,这个直接减去该顶点的L的平方即可
一种是L的边重叠,这个可以枚举重叠中的顶点,然后一个是在该顶点能构成的L,一个是经过该顶点的L,直接预处理出经过该顶点的L之后乘起来减掉即可。。
一种是2个L的边交叉,只相交于一点,这个可以枚举交叉点,然后预处理横向经过该点的L和纵向经过该点的L,乘起来减掉就行了。。(顺便处理了情况2)
貌似不是很难。。就是思路放不开。。得多接触。。尤其是转化为去算交叉部分那里。。
/**
* ┏┓ ┏┓
* ┏┛┗━━━━━━━┛┗━━━┓
* ┃ ┃
* ┃ ━ ┃
* ┃ > < ┃
* ┃ ┃
* ┃... ⌒ ... ┃
* ┃ ┃
* ┗━┓ ┏━┛
* ┃ ┃ Code is far away from bug with the animal protecting
* ┃ ┃ 神兽保佑,代码无bug
* ┃ ┃
* ┃ ┃
* ┃ ┃
* ┃ ┃
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*/
#include
#include
#include
#include
#include
#include
#include