当前位置: 首页 > news >正文

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录

 D - Tile Pattern

题目大意:

思路:

代码:


 

 D - Tile Pattern

D - Tile Pattern (atcoder.jp)

题目大意:

 给你一个n和q,n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况,q为查询次数,然后使用局部棋盘填充整个棋盘,全局棋盘大小为(10^9 * 10^9),然后一次查询会给出a b c d,(a,b)表示选中棋盘的左上角,(c,d)表示选中棋盘的右上角,然后问在这个选中区域中有多少个黑色棋子。

思路:

editorial1

我们其实可以通过预处理这个局部棋盘矩阵,得到任意以(0,0)为左上角的矩阵的含有黑色棋子的个数,即dp[i][j]表示  (0,0) -> (i,j)的矩阵含有黑色棋子的个数。

 如果把这个选中矩阵填充成 (0,0) -> (c,d).                                                                                       那么答案就为 dp[c][d] - dp[c][b-1] - dp[a-1][d] + dp[a-1][b-1].

但是如果a b c d 都大于n,那么其实我们可以沿着这个思路,将d区看作是完整的m*n个局部棋盘,c区看作是列不全的m个局部棋盘,b区看作是行不全的n个局部棋盘,a区看作是列不全和行不全的棋盘,然后d区可以直接通过 m*m*dp[n][n]求得,c区和b区都分别等于m个列不全和行不全的局部棋盘和n个列不全和行不全的局部棋盘,然后这些局部棋盘又可以通过 dp[c][d] - dp[c][b-1] - dp[a-1][d] + dp[a-1][b-1]得到。

代码:

import java.io.*;
import java.math.BigInteger;
import java.util.StringTokenizer;/*** @ProjectName: study3* @FileName: Ex37* @author:HWJ* @Data: 2023/12/2 20:50*/
public class Ex37 {static long[][] dp;static int n;public static void main(String[] args) {n = input.nextInt();int q = input.nextInt();long[][] map = new long[n][n];dp = new long[n + 1][n + 1];for (int i = 0; i < n; i++) {String str = input.next();char[] s = str.toCharArray();for (int j = 0; j < n; j++) {if (s[j] == 'B') {map[i][j] = 1;}}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + map[i - 1][j - 1];}}for (int i = 0; i < q; i++) {int a = input.nextInt();int b = input.nextInt();int c = input.nextInt();int d = input.nextInt();long ans = f(a, b, c+1, d+1);out.println(ans);}out.flush();out.close();}public static long f(int a, int b, int c, int d){return g(c,d) - g(c,b) - g(a,d) + g(a,b);}public static long g(int a, int b){if (a <= n && b <= n) return dp[a][b];int Hq = a / n, Hr = a % n;int Wq = b / n, Wr = b % n;long ret = 0;ret += g(n, n) * Hq * Wq;ret += g(Hr, n) * Wq;ret += g(n, Wr) * Hq;ret += g(Hr, Wr);return ret;}static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static Input input = new Input(System.in);static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static class Input {public BufferedReader reader;public StringTokenizer tokenizer;public Input(InputStream stream) {reader = new BufferedReader(new InputStreamReader(stream), 32768);tokenizer = null;}public String next() {while (tokenizer == null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(reader.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public String nextLine() {String str = null;try {str = reader.readLine();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return str;}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}public Double nextDouble() {return Double.parseDouble(next());}public BigInteger nextBigInteger() {return new BigInteger(next());}}
}
/*
10 1
BBBWWWBBBW
WWWWWBBBWB
BBBWBBWBBB
BBBWWBWWWW
WWWWBWBWBW
WBBWBWBBBB
WWBBBWWBWB
WBWBWWBBBB
WBWBWBBWWW
WWWBWWBWWB
5 21 21 93*/

 

相关文章:

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录 D - Tile Pattern 题目大意&#xff1a; 思路&#xff1a; 代码&#xff1a; D - Tile Pattern D - Tile Pattern (atcoder.jp) 题目大意&#xff1a; 给你一个n和q&#xff0c;n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况&#xff0c;q为查询次数…...

Google测试框架googletest简介与使用方法

环境准备&#xff08;Ubuntu&#xff09; 下载 git clone https://github.com/google/googletest.git 安装 cd googletest // 创建build目录 mkdir build cd build //编译安装 cmake .. make sudo make install 检查是否安装成功 ls /usr/local/lib// 存在以下文件则说明…...

进程的创建:fork()

引入 创建进程的方式我们已经学习了一个&#xff01;在我们运行指令(或者运行我们自己写的可执行程序)的时候不就是创建了一个进程嘛&#xff1f;那个创建进程的方式称为指令级别的创建子进程&#xff01; 那如果我们想要在代码中创建进程该怎么办呢&#xff1f; fork() for…...

Fabric:创建应用通道

搭建自定义网络可以参考文章&#xff1a; https://blog.csdn.net/yeshang_lady/article/details/134113296 1 创建通道 网络搭建完成之后&#xff0c;就可以开始创建通道了。Fabric V2.5.4中可以在不创建系统通道的情况下直接创建应用通道。 1.1 修改配置文件 先创建配置文…...

力扣每日一题(2023-11-30)

力扣每日一题 题目&#xff1a;1657. 确定两个字符串是否接近 日期&#xff1a;2023-11-30 用时&#xff1a;21 m 07 s 时间&#xff1a;11ms 内存&#xff1a;43.70MB 代码&#xff1a; class Solution {public boolean closeStrings(String word1, String word2) {if(word1.…...

内部类Lambda

静态内部类 /*** 静态成员是在类加载成字节码时就已经存在的,静态只能访问静态*/ public class Demo {public static void main(String[] args) {Outer.Inner.show();} }class Outer {int num1 10;static int num2 20;static class Inner {static void show() {Outer outer …...

设一棵二叉树中各结点的值互不相同,其先序遍历序列和中序遍历序列分别存于两个一维数组A[1...n]和 Bfl...n]中,试编写算法建立该二叉树的二叉链表。

题目描述&#xff1a;设一棵二叉树中各结点的值互不相同&#xff0c;其先序遍历序列和中序遍历序列分别存于两个一维数组A[1…n]和 B[1…n]中&#xff0c;试编写算法建立该二叉树的二叉链表。 分析&#xff1a; 对于一颗二叉树&#xff0c;知道其中序和先序序列就可以完全确定…...

什么是Daily Scrum?

Daily Scrum&#xff08;每日站会&#xff09;&#xff0c;Scrum Master要确保这个会在每天都会开。这个会的目的就是检查正在做的东西和方式是否有利于完成Sprint目的&#xff0c;并及时做出必要的调整。 每日站会一般只开15分钟&#xff0c;为了让事情更简单些&#xff0c;这…...

逆波兰表达式求值[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个字符串数组tokens&#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。 有效的算符为 ‘’、‘-’、‘*’ 和 ‘/’ 。 每个操作数&#xff08;运算对象&#xff09;都…...

Oracle连接和使用

5. Oracle连接和使用 5.1. sqlplus sqlplus作为甲骨文公司提供的一款本族工具产品,有着悠久的历史和积淀,它几乎伴随着Oracle数据库产生至今的整个生命周期,而且,还会继续和Oracle数据库产品相伴一直发展下去。该工具看似简单灵活的背后,却为广大用户使用Oracle数据库提…...

redis单线程为什么这么快

redis单线程为什么这么快 redis是使用的单线程来进行操作的&#xff0c;因为所有的数据都是在内存中的&#xff0c;内存操作特别快。而且单线程避免了多线程切换性能损耗问题 单线程如何处理并发客户端连接&#xff1f; redis利用epoll来实现IO多路复用&#xff0c;将连接信息和…...

工业机器视觉megauging(向光有光)使用说明书(五,轻量级的visionpro)

这个说明主要介绍抓线功能。 第一步&#xff0c;添加线工具&#xff0c;鼠标双击工具箱“抓线”&#xff0c;出现如下界面&#xff1a; 第二步&#xff0c;我们拉一条&#xff0c;“九点标定”到“抓线1”的线&#xff0c;和visionpro操作一样&#xff1a; 第三步&#xff0c;…...

【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛

文章目录 【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛A.星期几考试&#xff1f;C.信件D、乘除法E、不知道叫什么名字F.我要学会盾反&#xff01;G.闪闪发光心动不已&#xff01;H.不想想背景的gcdI.uu爱玩飞行棋J.火柴人小游戏K .有趣的BOSS 【LittleXi】2023年广东…...

【C语言:数据在内存中的存储】

文章目录 1.整数在内存中的存储1.1整数在内存中的存储1.2整型提升 2.大小端字节序2.1什么是大小端2.2为什么有大小端之分 3.整数在内存中的存储相关题目题目一题目二题目三题目四题目五题目六题目七 4.浮点数在内存中的存储4.1浮点数存的过程4.2浮点数取得过程 在这之前呢&…...

每日一练:阿姆斯特朗数

如果一个 n 位正整数等于其各位数字的 n 次方之和&#xff0c;则称该数为阿姆斯特朗数。 例如 1^3 5^3 3^3 153。 1000 以内的阿姆斯特朗数&#xff1a; 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。...

fatal: remote error: upload-pack: not our ref (未解决问题)

PX4使用 git submodule update --init --recursive报错 fatal: remote error: upload-pack: not our ref解决办法参考&#xff1a;https://stackoverflow.com/questions/61163082/why-does-git-submodule-update-fail-with-fatal-remote-error-upload-pack-not-o 感觉就是清…...

Python 3 使用 read()、readline()、readlines() 函数 读取文件

1 样例文件 example.txt 春晓 孟浩然〔唐代〕 春眠不觉晓&#xff0c;处处闻啼鸟。 夜来风雨声&#xff0c;花落知多少。 2 分别使用 read()、readline()、readlines() 函数 2.1 # read() -------- 一次性读取所有文本&#xff0c;以字符串的形式返回结果。 # read() ----…...

勒索解密后oracle无法启动故障处理----惜分飞

客户linux平台被勒索病毒加密,其中有oracle数据库.客户联系黑客进行解密【勒索解密oracle失败】,但是数据库无法正常启动,dbv检查数据库文件报错 [oraclehisdb ~]$ dbv filesystem01.dbf DBVERIFY: Release 11.2.0.1.0 - Production on 星期一 11月 27 21:49:17 2023 Copyrig…...

Leetcode144. 二叉树的前序遍历-C语言

文章目录 题目介绍题目分析解题思路1.创建一个数组来储存二叉树节点的值2.根据二叉树的大小来开辟数组的大小3.边前序遍历边向创建的数组中存入二叉树节点的值 完整代码 题目介绍 题目分析 题目要求我们输出二叉树按前序遍历排列的每个节点的值。 解题思路 1.创建一个数组来…...

dmesg命令在软件测试中的实际应用

简介&#xff1a;当你想要了解 Linux 系统在启动时究竟发生了什么&#xff1f;或者当硬件设备不工作时&#xff0c;如何进行调试&#xff1f;这就是 dmesg 命令的用武之地。本文将介绍 dmesg 的基本功能&#xff0c;并深入探讨其在软件测试中的实际应用。 历史攻略&#xff1a…...

基于Qwen3-VL-8B-Instruct-GGUF的C++高性能推理服务开发

基于Qwen3-VL-8B-Instruct-GGUF的C高性能推理服务开发 如果你正在寻找一种方法&#xff0c;把强大的多模态AI模型集成到自己的应用里&#xff0c;同时还要保证高性能、低延迟&#xff0c;那么用C来开发推理服务是个不错的选择。今天咱们就来聊聊&#xff0c;怎么用C为Qwen3-VL…...

别只盯着PID!用STM32的PWM差速控制,让你的循迹小车转弯更稳(附源码分析)

STM32 PWM差速控制&#xff1a;让循迹小车转弯更稳的实战技巧 循迹小车的核心挑战之一是如何实现平滑稳定的转弯控制。许多开发者习惯性地直接套用PID算法&#xff0c;却忽略了更基础的PWM差速控制策略。实际上&#xff0c;通过精心设计的PWM占空比调整方案&#xff0c;完全可以…...

手机号码定位查询工具:3分钟快速部署,轻松查询号码归属地

手机号码定位查询工具&#xff1a;3分钟快速部署&#xff0c;轻松查询号码归属地 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitco…...

5G网络架构:核心网、接入网的组成与工作原理

5G网络架构&#xff1a;核心网、接入网的组成与工作原理&#x1f4dd; 本章学习目标&#xff1a;本章探讨网络编程&#xff0c;帮助读者掌握网络应用开发技能。通过本章学习&#xff0c;你将全面掌握"5G网络架构&#xff1a;核心网、接入网的组成与工作原理"这一核心…...

从设计到上线:基于快马平台开发一个具备完整功能的qclaw官网实战指南

从设计到上线&#xff1a;基于快马平台开发一个具备完整功能的qclaw官网实战指南 最近接手了一个qclaw官网的开发需求&#xff0c;需要从零开始构建一个具备完整功能的官方网站。经过调研&#xff0c;我选择了InsCode(快马)平台作为开发环境&#xff0c;因为它不仅提供了完整的…...

5个专业级步骤:DriverStore Explorer驱动管理工具解决Windows系统稳定性难题

5个专业级步骤&#xff1a;DriverStore Explorer驱动管理工具解决Windows系统稳定性难题 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 问题剖析&#xff1a;为什么常规方法无法解决驱…...

OpenClaw+Phi-3-vision-128k-instruct图文处理实战:本地部署与多模态任务自动化

OpenClawPhi-3-vision-128k-instruct图文处理实战&#xff1a;本地部署与多模态任务自动化 1. 为什么选择这个技术组合&#xff1f; 去年我开始尝试用AI处理日常工作中的图文混合内容时&#xff0c;遇到了一个典型困境&#xff1a;现有的云端多模态服务要么价格昂贵&#xff…...

多图拼长条与宫格拼接批处理备忘

手头有一批产品白底图&#xff0c;需要批量产出两类物料&#xff1a;一类是横向四连图做详情对比&#xff0c;一类是 22 宫格做缩略封面。统一用【批量图片拼接工具】走完&#xff0c;下面只记参数组合和踩坑点&#xff0c;不写实现细节。输入侧是「主文件夹」路径&#xff0c;…...

3步解锁加密音乐:ncmdumpGUI技术解析与实战指南

3步解锁加密音乐&#xff1a;ncmdumpGUI技术解析与实战指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款专为网易云音乐用户设计的NCM文件…...

2026届最火的六大AI辅助写作方案实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 旨在系统阐述大规模语言模型创新架构以及训练方法的DeepSeek系列论文&#xff0c;其核心贡献…...