news 2026/2/3 19:09:10

ABC331D Tile Pattern

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ABC331D Tile Pattern

原题

题目描述

有一个 10^9 乘 10^9的方格网格。让 (i,j)表示从上往下数第 (i+1)行、从左往右数第 (j+1) 列的方格

每个方格要么是黑色要么是白色。方格 (i,j)的颜色由字符 P[i mod N][j mod N]表示,其中B表示黑色,W表示白色。这里,a mod b表示a除以b的余数。

回答 Q个查询。

每个查询给出四个整数 A,B,C,D要求你找出以 (A,B)为左上角、(C,D)为右下角的矩形区域内包含的黑色方格数量。

题目思路

令f(x,y)为满足条件的黑色方格的个数,则所求的答案就是f(c+1,d+1)-f(a,d+1)-f(c+1,b)+f(a,b)。但是如直接计算肯定比较麻烦,可以利用他的一些性质。当x=8,y=7时,如右图所示,可以将其分解为A*(x/n)*(y/n)、B*(y/n)、C*(x/n),D。其中A=f(n,n),B=f(x%n,n),C=f(y%n,n),D=f(x%n,y%n)。即可以将其分解为f(n,n)*(x/n)*(y/n) + (y/n)*f(x%n,n) + (x/n)*f(n,y%n) + f(x%n,y%n)。最后f(1,1)~f(n,n)可以使用前缀和的方式快速求出。

#include<bits/stdc++.h> using namespace std; using LL=long long;//给long long去个别名LL const int N=1010; int n,q,h[N][N]; LL f(LL x,LL y){ if(x<=n&&y<=n){ return h[x][y]; } return f(n,n)*(x/n)*(y/n)+(x/n)*f(n,y%n)+(y/n)*f(x%n,n)+f(x%n,y%n); } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ char c; cin>>c; h[i][j]=(c=='B')+h[i-1][j]+h[i][j-1]-h[i-1][j-1]; } } //前缀和优化↑ while(q--){//处理q次查询 int a,b,c,d; cin>>a>>b>>c>>d; c++; d++; cout<<f(c,d)-f(a,d)-f(c,b)+f(a,b)<<"\n"; } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/29 12:16:43

CLI形态的智能编程

CLI形态的智能编程&#xff0c;是指把AI编程能力做成“命令行工具&#xff08;Command-Line Interface&#xff09;”&#xff0c;让开发者在终端里直接敲自然语言指令&#xff0c;就能完成写代码、改Bug、跑测试、部署等任务&#xff0c;而不必打开图形界面或IDE。它的核心特点…

作者头像 李华
网站建设 2026/1/29 12:16:19

说说Redis的单线程架构

回答框架建议 一句话概括核心&#xff1a;先给出精准的定义&#xff0c;纠正常见误解。详细阐述“单线程”的含义&#xff1a;具体是哪里单线程。深入分析为什么采用单线程还能如此高效&#xff1a;这是回答的精华部分。客观讨论单线程模型的优缺点&#xff1a;体现你的辩证思考…

作者头像 李华
网站建设 2026/1/31 14:31:18

MSF的基础使用

以两个windows主机层面的漏洞&#xff0c;简单演示一下msf框架的使用。 MS08-067 简介 影响范围&#xff1a;MS08-067漏洞会影响Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本&#xff0c;甚至还包括测试阶段的Windows 7 Pro-Beta。 漏洞产生的原因及攻击效果&…

作者头像 李华
网站建设 2026/1/29 13:49:11

[技术讨论] 三极管高低温特性测试

三极管控制电路是很常见的&#xff0c;但是设计不好的时候&#xff0c;也会导致电路正常的工作。比如下面两个电路&#xff0c;仅仅是集电极电阻不一样&#xff0c;也就是流过集电极的电流不一样&#xff0c;最后仿真的结果就会显示三极管BE的压降不相同&#xff0c;一个是0.77…

作者头像 李华
网站建设 2026/1/31 20:08:06

Semgrep终极指南:快速掌握跨平台静态代码分析利器

Semgrep终极指南&#xff1a;快速掌握跨平台静态代码分析利器 【免费下载链接】semgrep Lightweight static analysis for many languages. Find bug variants with patterns that look like source code. 项目地址: https://gitcode.com/GitHub_Trending/se/semgrep 告别…

作者头像 李华
网站建设 2026/2/3 10:04:58

LangChain RAG-MultiVector实现多向量检索文档

01. 多表征/向量索引多个维度记录信息 等同于为文档块生成 多个向量&#xff0c;支持的方法如下&#xff1a;把文档切割成更小的块&#xff1a;通过检索更小的块&#xff0c;但是查找其父类文档&#xff08;ParentDocumentRetriever&#xff09;。摘要&#xff1a;使用 LLM 为每…

作者头像 李华