Focus on yourself, min|

wscqwq

园龄:2年粉丝:2关注:3

[ABC354D]

https://www.luogu.com.cn/problem/AT_abc354_d

https://atcoder.jp/contests/abc354/tasks/abc354_d

由图片可知,很显然每个 4×2​ 网格(称为单位网格)都是全等的。

为了方便,将 A,B,C,D 都增加 109,因为 109mod4=109mod2=0,所以图形没有变化。很重要,这样就很明显只有 8 种分讨的情况了)。

以下面积指 ×2​ 后的值(即答案)。

然后我们利用前缀和技巧即可求出 (A,B)(C,D) 的面积。

S(x,y) 表示 (0,0)(x,y) 的面积。

于是考虑根据 a=xmod4,b=ymod2 的情况大力分讨:

  1. b=0(直接运算的方法)

    1. a=0,刚好是若干个单位网格,S=x×y(单位网格内所有黑色、白色成对出现)
    2. a=1,刚好是若干个单位网格+往右扩展 dy÷2image-20240519082721939S=(x1)×y+y÷2×3
    3. a=2,刚好是若干个单位网格+往右扩展 dy÷2image-20240519083109745S=(x2)×y+y÷2×6
    4. a=3,刚好是若干个单位网格+往右扩展 dy÷2image-20240519083317365S=(x3)×y+y÷2×7
  2. b=1​(利用前缀和)

    1. a=0,发现多出来的一行恰好是若干个半个单位网格,S==(x1)×y+x
    2. a=1,2,3,直接利用前缀和加上右上角的网格的面积(分别是image-20240519084307392+2,1,0)。(计算按照 a=0,1,2,3 的顺序,因为每次要利用 S(x,y1))。

时间复杂度 O(1)​。

image-20240519085926915

如图,S(A,B,C,D)=S(C,D)S(A,D)S(C,B)S(A,B)

根据上图也可以解释上述分讨第2大类的求前缀和: S(A,B)=S(A1,B)+S(A,B1)S(A1,B1)+val(A,B)

https://atcoder.jp/contests/abc354/submissions/53651499

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/18200051

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(35)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起