csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」
Posted znsbc-13
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」相关的知识,希望对你有一定的参考价值。
夜莺与玫瑰
题解
联赛$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)$
代码
夜莺
以上是关于csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」的主要内容,如果未能解决你的问题,请参考以下文章
csp-s模拟测试58「Divisors」·「Market」·「Dash Speed」?
csp-s模拟测试57(10.2)「天空龙」·「巨神兵」·「太阳神」
csp-s模拟测试94「凉宫春日的犹豫·漫无止境的八月·射手座之日」