「考试」夜莺与玫瑰

  这道题还是不错的,不过一开始读错了题,以为要求线段个数,那样的话是一个裸的莫比乌斯反演,写完过不了大样例才发现是求直线。于是直接死了。

  考后看题解。

  发现$ans=\sum\limits_{i=1}^{n-1}\sum\limits_{j=1}^{m-1}[gcd(i,j)==1]((n-i)(m-j)-max(0,n-2i)*max(0,m-2j))$

  什么意思呢?

  首先枚举斜率,然后计算这个斜率的直线的个数,这样的话我们不能用相同的斜率来重复计算,所以要[gcd(i,j)==1]。

  那么考虑一下哪些点可以作为一个线的代表元素?这个点的前驱必然在点阵中,后继必然不再点阵中。

  这样的话是一个矩形的右上边框的贡献,也就是上面那个式子的后半部分。

  考虑优化。

  卡了空间只能开两个数组。于是我用一个存满足$gcd(i,j)==1$的i的和,另一个是j的。

  这样的话,需要快速知道的就是

  1.这个要乘n。反演一下。

   $\sum\limits_{i=1}^{n-1}\sum\limits_{j=1}^{m-1}[gcd(i,j)==1]$

  $=\sum\limits_{i=1}^{n-1}\sum\limits_{j=1}^{m-1}\sum\limits_{d|gcd(i,j)}\mu(d)$

  $=\sum\limits_{d=1}^{min(n-1,m-1)}\mu(d)\lfloor\frac{n-1}{d}\rfloor\lfloor\frac{m-1}{i}\rfloor$

  2.然后是后面的ij项。

   $\sum\limits_{i=1}^{n-1}\sum\limits_{j=1}^{m-1}[gcd(i,j)==1]ij$

  $=\sum\limits_{i=1}^{n-1}\sum\limits_{j=1}^{m-1}ij\sum\limits_{d|gcd(i,j)}\mu(d)$

  $=\sum\limits_{d=1}^{min(n-1,m-1)}\mu(d)d^2\lfloor\frac{n(n+1)}{2}\rfloor\lfloor\frac{m(m+1)}{2}\rfloor$

  然后就可以根号询问了。

  得解。

转载于:https://www.cnblogs.com/Lrefrain/p/11524431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值