2024/3/14打卡棋子(14届蓝桥杯)——差分

标准差分模板   差分——前缀和的逆运算(一维+二维)-CSDN博客

题目

小蓝拥有 n×n 大小的棋盘,一开始棋盘上全都是白子。

小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。

请输出所有操作做完后棋盘上每个棋子的颜色。

输入格式

输入的第一行包含两个整数 n,m,用一个空格分隔,表示棋盘大小与操作数。

接下来 m 行每行包含四个整数 x1,y1,x2,y2,相邻整数之间使用一个空格分隔,表示将在 x1 至 x2 行和 y1 至 y2 列中的棋子颜色取反。

输出格式

输出 n 行,每行 n 个 0 或 1 表示该位置棋子的颜色。

如果是白色则输出 0,否则输出 1。

数据范围

对于 30% 的评测用例,1≤n,m≤500;
对于所有评测用例,1≤n,m≤2000,1≤x1≤x2≤n,1≤y1≤y2≤n。

输入样例:

3 3
1 1 2 2
2 2 3 3
1 1 3 3

输出样例:

001
010
100

方法

        针对于改变一个区间的值进行改变,(无论是加,减等),都可以考虑使用差分来做。

差分定义:给定一个原数组a[1],a[2],a[3]...a[n],构造一个差分数组b[1],b[2],b[3]...b[n],                        使得a[i] = b[1]+b[2]+b[3]+...+ b[i]

        因此,这里可以选用二维差分:

         差分——前缀和的逆运算(一维+二维)-CSDN博客   (对差分的详解)

        对于该题来说,可以发现,翻奇数次是黑子,翻偶数次是白子。因此如果我们想要改变某个区间的值 ,我们可以直接选择对于该区间的每个数+1,如果最终结果是偶数,就用0表示,奇数用1表示。

代码

import java.io.*;
// 直接+1,如果是偶数,则为白子,否则为黑子
class Main{
    static int N = 2010;
    static int n,m;
    static int[][] a = new int[N][N];
    public static void main(String[] args) throws IOException{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
        String[] s = in.readLine().split(" ");
        n = Integer.parseInt(s[0]);
        m = Integer.parseInt(s[1]);

        while(m-->0){
            s = in.readLine().split(" ");
            int x1 = Integer.parseInt(s[0]);
            int y1 = Integer.parseInt(s[1]);
            int x2 = Integer.parseInt(s[2]);
            int y2 = Integer.parseInt(s[3]);
            insert(x1,y1,x2,y2); // 对每个区间进行差分
        }

        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                a[i][j] = a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j]; // 计算前缀和,即a[i][j]
                if(a[i][j]%2==0) out.write("0");
                else out.write("1");
            }
            out.write("\n");
        }
        out.close();
    }
    // 差分计算
    public static void insert(int x1,int y1,int x2,int y2){
        a[x1][y1] += 1;
        a[x1][y2+1] -= 1;
        a[x2+1][y1] -= 1;
        a[x2+1][y2+1] += 1;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Godot4.2】任意多边形或折线围绕任意点旋转

概述 在很多绘图软件中&#xff0c;都会有对于任意图形围绕给定的旋转中心旋转的基本操作。本节就基于Godot实现任意多边形&#xff08;Polygon&#xff09;或折线&#xff08;Polyline&#xff09;绕任意旋转中心&#xff08;在图形内或外都可以&#xff09;进行旋转。 基本…

Git 仓库瘦身与 LFS 大文件存储

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久&#xff0c;追踪的文件越来越多&#xff0c;git 存储的 objects 数量会极其庞大&#xff0c;每次从远程仓库 git clone 的时候都会墨迹很久。如果我们不小心 git add 了一个体积很大的文件&#xff0c;且 git push…

IT系统可观测性

什么是可观测性 可观测性&#xff08;Observability&#xff09;是指能够从系统的外部输出推断出系统内部状态的能力。在IT和云计算领域&#xff0c;它涉及使用软件工具和实践来收集、关联和分析分布式应用程序以及运行这些应用程序的硬件和网络产生的性能数据流。这样做可以更…

2024年发布jar到国外maven中央仓库最新教程

2024年发布jar到国外maven中央仓库最新教程 文章目录 1.国外sonatype仓库的版本1.1老OSSHR账号注册说明1.2新账号注册说明 2.新账号注册(必选)3.新账号登录创建Namespace3.1创建Namespace的名字的格式要求&#xff08;必选&#xff09;3.2发布一个静态网站&#xff08;可选&…

后端工程师快速使用axios

文章目录 01.AJAX 概念和 axios 使用模板目标讲解代码解析案例前端后端结果截图 02.URL 查询参数模板目标讲解案例前端后端结果截图 03.常用请求方法和数据提交模板目标讲解案例前端后端结果截图 04.axios 错误处理模板目标讲解案例前端后端结果截图 01.AJAX 概念和 axios 使用…

旅游管理系统|基于SpringBoot+ Mysql+Java+Tomcat技术的旅游管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 …

数据的响应式:实现动态数据驱动的技巧

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

弗洛伊德-华沙算法求任意两点之间的最短路径算法

对于弗洛伊德-华沙算法首先是要假设研究的图中是不包含有负边的&#xff0c;对于所给的图中的任意亮点v1&#xff0c;vm&#xff0c;假设两点之间存在一条连通路径&#xff0c;对于该路径中去掉头和尾节点&#xff0c;也就是v1&#xff0c;vm&#xff0c;剩下的节点也就称之为这…

【嵌入式学习收徒,高薪offer等你来!!!】

有粉丝问了一个问题&#xff0c;说他今年要毕业了&#xff0c;投了好多简历都石沉大海&#xff0c;感觉好多公司都不招人了&#xff0c;想问一下现在究竟是不是如此&#xff0c;不清楚我当年毕业的时候是怎么样的。 我先不直接回答这个问题&#xff0c;先来看一组数据&#xf…

Windows11安装Msql8.0版本详细安装步骤!

文章目录 前言一、下载Mysql二、安装Mysql三、登录验证三、环境变量配置总结 前言 每次搭建新环境的时候&#xff0c;都需要网上搜寻安装的步骤教程&#xff01;为了以后方便查阅&#xff01;那么本次就记录一下Windows11安装Msql8.0的详细步骤&#xff01;也希望能帮助到有需…

在浏览器中使用websocket协议

在浏览器中使用websocket协议 浏览器中提供了 WebSocket 类&#xff0c;我们可以直接使用&#xff1a; new WebSocket((url: string | URL, protocols?: string | string[] | undefined))url&#xff1a;指定连接的 URL&#xff0c;只支持 ws、wss 协议&#xff0c;否则会提…

类与对象题目

第一题 该题说明了静态方法不依靠对象访问&#xff0c;所以即使是null也能正常运行&#xff0c;当然正确访问应该是通过类型访问&#xff0c;不应该用null去访问&#xff08;用null也不会报错&#xff0c;也能使用静态方法&#xff09;。 第二题 局部变量不允许被static修饰&am…

swagger使用手册

1.导入依赖 <!--引入swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><dependency><groupId>io.springfox</…

【DFS深度优先搜索专题】【蓝桥杯备考训练】:迷宫、奶牛选美、树的重心、大臣的旅费、扫雷【已更新完成】

目录 1、迷宫&#xff08;《信息学奥赛一本通》&#xff09; 2、奶牛选美&#xff08;USACO 2011 November Contest Bronze Division&#xff09; 3、树的重心&#xff08;模板&#xff09; 4、大臣的旅费&#xff08;第四届蓝桥杯省赛Java & C A组&#xff09; 5、扫…

Window部署AgileConfig

AgileConfig&#xff1a;分布式配置中心 github&#xff1a;GitHub - dotnetcore/AgileConfig: 基于.NET Core开发的轻量级分布式配置中心 / .NET Core lightweight configuration server 下载部署包&#xff1a;Releases dotnetcore/AgileConfig GitHub 版本&#xff1a;…

传统电力运维企业的数字化转型案例

一. 传统电力运维企业面临的主要问题 上海某电力集团企业下属有成套设备公司、电力工程公司&#xff0c;依托于自身的设备制造和工程服务能力&#xff0c;以及多年积累的终端客户资源&#xff0c;几年前该公司成立了电力运维服务公司进入用户侧电力托管运维服务行业。 该公司…

滑块验证码

1.这里针对滑块验证给了一个封装的组件verifition&#xff0c;使用直接可以调用 2.组件目录 3.每个文件的内容 3.1 Api文件中只有一个index.js文件&#xff0c;用来存放获取滑块和校验滑块结果的api import request from /router/axios//获取验证图片 export function reqGe…

算法之前缀和

题目1: 【模板】一维前缀和&#xff08;easy&#xff09; 方法一: 暴力解法, 时间复杂度O(n*q), 当n10^5, q 10^5, 时间复杂度为O(10^10), 会超时. 方法二: 前缀和: 快速求出数组中某一段连续区间的和. 第一步: 预处理出来一个前缀和数组dp: 1. dp[i]表示区间[1,i]里所有元…

TypeScript中的 K、T 、V

文章目录 前言泛型类型链接关系K、T、V 含义自动类型推断泛型的应用场景容器类和数据结构函数和方法接口和类类型约束和扩展常用的工具类型 前言 在 TypeScript 的泛型里经常会碰到一些字母&#xff0c;比如 K、T、V&#xff0c;是不是觉得很奇怪&#xff1f; 泛型类型 图中的…

全基因集GSEA富集分析

原文链接&#xff1a;一文完成全基因集GSEA富集分析 本期内容 写在前面 我们前面分享过一文掌握单基因GSEA富集分析的教程&#xff0c;主要使用单基因的角度进行GSEA富集分析。 我们社群的同学咨询&#xff0c;全基因集的GSEA如何分析呢&#xff1f;&#xff1f;其实&#x…
最新文章