标签:lin code 测试 假设 相减 代码 部分 直线 png
联赛$T1$莫比乌斯$\%\%\%$
$dead$ $line$是直线
首先横竖就是$n+m$这比较显然
枚举方向向量
首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所有斜着的直线
$i,j$表示当自己向右$i$个单位长度,向下$j$单位长度
我们相同斜率下只算最短的线贡献,(因为其他长度下方案数都包含在最短里面了)
我们方向向量$i$,$j$的$gcd(i,j)==1$时我们枚举的才是当前斜率最短长度,
然后考虑贡献
考虑容斥,先算出来当前长度下所有线段再减去重合的
$(n-a)*(m-b)$是总方案数,考虑重合部分
假设我们有一个4*4点阵
. . . .
. . . .
. . . .
. . . .
我们算1,1方向向量贡献
\ \ \ .
\ \ \ \
\ \ \ \
. \ \ \
只有
\ \ \ .
\ \ \ \
\ \ \ \
. \ \ \
才有贡献,别的都是算重的
定义前趋为$x-1$ $y-1$,后继$x+1$ $y+1$
观察这些线发现符合条件就是前趋不在点阵而后继在点阵数量
例如$1$,$1$这个点$+$方向向量得到$-1$ $-1$ 和$2$ $2$
因为$-1$ $-1$不在点阵内所以是合法的
,我们把他们都提到与边界相重
看他们相减后是否在边界中即可
重复的部分就是$max((n-2*a),0)*max((m-2*b),0)$
夜莺
标签:lin code 测试 假设 相减 代码 部分 直线 png
原文地址:https://www.cnblogs.com/znsbc-13/p/11494458.html