码迷,mamicode.com
首页 > 其他好文 > 详细

csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」

时间:2019-09-09 22:53:57      阅读:125      评论:0      收藏:0      [点我收藏+]

标签: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)$

 

代码

夜莺

 

csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」

标签:lin   code   测试   假设   相减   代码   部分   直线   png   

原文地址:https://www.cnblogs.com/znsbc-13/p/11494458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!