[ABC354D]

news/2024/11/17 19:46:06/文章来源:https://www.cnblogs.com/wscqwq/p/18200051

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

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

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

为了方便,将 \(A,B,C,D\) 都增加 \(10^9\),因为 \(10^9\bmod 4=10^9\bmod 2=0\),所以图形没有变化。很重要,这样就很明显只有 \(8\) 种分讨的情况了)。

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

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

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

于是考虑根据 \(a=x\bmod 4,b=y\bmod 2\) 的情况大力分讨:

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

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

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

时间复杂度 \(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(A-1,B)+S(A,B-1)-S(A-1,B-1)+\text{val(A,B)}\)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/708609.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验二 电子传输系统安全-进展1

上周任务完成情况(代码链接,所写文档等将电子公文传输系统重新调试通过,并运行 小组成员每个人读完《Core.Software.Security.Security.at.the.Source.CN.软件安全.从源头开始》和《The.Security.Development.Lifecycle.CN.软件安全开发生命周期》,并写好相应的读书笔记 熟…

BeautifulSoup库

一、安装BeautifulSoup库 可以现在目前python安装了哪些包安装beautifulsoup二、beautifulsoup官网 https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 三、beautifulsoup的主要解析器 四、beautifulsoup的find函数 查找html的titlefrom bs4 import BeautifulSouphtml=&…

读人工智能时代与人类未来笔记07_人工智能往何处去

读人工智能时代与人类未来笔记07_人工智能往何处去1. 人工智能的限制和管理 1.1. 在前几代人工智能中,人们将社会对现实的某种理解提炼为程序代码,而当下的机器学习人工智能与之不同,它们在很大程度上是靠自己对现实进行建模 1.2. 虽然开发人员可以检…

二分图的最大匹配(匈牙利算法)代码

二分图的最大匹配代码 #include <bits/stdc++.h> using namespace std;const int N = 505, M = 100005; int h[N], e[M], ne[M], idx; int match[N]; bool st[N]; int n1, n2, m;void add(int a, int b) {e[idx] = b; //e[idx]存放的是第idx条边的终点ne[idx] = h[a]; //…

【GUI软件】采集抖音博主的主页视频(可监控对标账号最新作品)

马哥原创:抖音采集软件,采集抖音博主的主页视频数据。目录一、背景介绍1.1 爬取目标1.2 演示视频1.3 软件说明二、代码讲解2.1 爬虫采集模块2.2 软件界面模块2.3 日志模块三、获取采集软件 一、背景介绍 1.1 爬取目标 您好!我是@马哥python说,一名10年程序猿。 我用python开…

VirtualBox虚拟机远程桌面连接设置详解(包含登录密码设置)

VirtualBox虚拟机远程桌面连接设置详解(包含登录密码设置)一、安装VirtualBox虚拟机下载与安装:访问VirtualBox官方网站,根据您的操作系统(如Linux、Windows、Mac等)下载对应版本的VirtualBox安装包。 安装下载的VirtualBox软件。创建虚拟机:打开VirtualBox,点击“新建…

(10)uart串口通信

一、uart简介二、uart串口通信实验 其中:sys_clk为系统时钟。uart_rxd为串口从上位机接收到的数据,当检测到uart_rxd出现下降沿(起始位),start_flag产生正向脉冲,rx_flag也被拉高,clk_cnt为时钟计数器,由0计数到433,rx_cnt为接收数据计数器,当计数到第九位且时钟计数…

OpenVX代码优化裁减简介

OpenVX代码优化裁减简介在OpenVX中,裁减(Reduction)是一种操作,它对数组或图像中的元素执行聚合操作。这里的“裁减”是指将大型数组或图像减少到单一数值的过程。 OpenVX提供了几种不同的裁减操作,包括求和(Summation)、平均(Average)、最小值(Minimum)、最大值(M…

IMX6ULL Linux内核网络驱动修改

IMX6ULL 网络驱动修改 主要修改arch/arm/boot/dts/imx6ul-14x14-evk.dtsi设备树文件即可,修改方式和u-boot的设备树修改一致。 硬件电路设备树修改 需要修改的设备树位置:arch/arm/boot/dts/imx6ul-14x14-evk.dtsi 增加复位引脚信息 从上面的原理图可知网口1使用的复位引脚是G…

SpringCloud(1)-Eureka相关配置

1.新建Module-注册中心作为注册中心 1.1配置 pom.xml <!-- 引入 eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>1…