地毯(暴力+差分两种方法)

news2024/11/27 10:48:52

题目描述

在 nx n 的格子上有 m 个地毯。

给出这些地毯的信息,问每个点被多少个地毯覆盖。

输入格式

第一行,两个正整数 n,m。意义如题所述。

接下来 m 行,每行两个坐标 (x_1,y_1) 和 (x_2,y_2),代表一块地毯,左上角是 (x_1,y_1),右下角是 (x_2,y_2)。

输出格式

输出 n行,每行n 个正整数。

第 i 行第 j 列的正整数表示 (i,j) 这个格子被多少个地毯覆盖。

样例 #1

样例输入 #1
5 3
2 2 3 3
3 3 5 5
1 2 1 4

样例输出 #1
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1

提示

样例解释

覆盖第一个地毯后:

覆盖第一、二个地毯后:

覆盖所有地毯后:

数据范围

对于 20% 的数据,有 n<= 50,m<= 100。

对于 100% 的数据,有 n,m<= 1000。

第一种方法:暴力做法。这道题的数据范围很小,所以暴力也可以过所有样例。

代码比较简单就不多讲了。

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 100010;
int q[N][N]; // 定义一个二维数组来记录操作结果

int main()
{
    int n, m;
    cin >> n >> m; // 输入n和m,分别表示矩阵的大小和操作的次数
    
    // 进行m次操作
    for (int i = 0; i < m; i++)
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2; // 输入操作的左上角和右下角坐标
        
        // 针对操作的区域,进行累加操作
        for (int j = x1; j <= x2; j++)
        {
            for (int k = y1; k <= y2; k++)
            {
                q[j][k]++; // 将区域内的每个元素增加1
            }
        }
    }
    
    // 输出操作后的结果
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            cout << q[i][j] << " "; // 输出每个位置的操作结果
        }
        cout << endl;
    }
    
    return 0;
}

第二种方法:差分。

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1010;
int q[N][N]; // 定义一个二维数组来记录操作结果

int main()
{
    int n, m;
    cin >> n >> m; // 输入n和m,分别表示矩阵的大小和操作的次数
    
    // 进行m次操作
    for (int i = 0; i < m; i++)
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2; // 输入操作的左上角和右下角坐标
        
        // 更新操作
        for (int j = x1; j <= x2; j++)
        {
            q[j][y1]++;       // 在该列上加1
            q[j][y2 + 1]--;   // 在该列的下一行减1,用于区分操作的范围
        }
    }
    
    // 根据更新操作,计算每个位置的最终值
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            q[i][j] += q[i][j - 1]; // 当前位置的值等于前一列的值加上当前位置的值
            cout << q[i][j] << " "; // 输出每个位置的最终结果
        }
        cout << endl;
    }
    
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL-每日一题【1341. 电影评分】

题目 表&#xff1a;Movies 表&#xff1a;Users 请你编写一个解决方案&#xff1a; 查找评论电影数量最多的用户名。如果出现平局&#xff0c;返回字典序较小的用户名。查找在 February 2020 平均评分最高 的电影名称。如果出现平局&#xff0c;返回字典序较小的电影名称。 …

Ubuntu22.04复现SHADEWACHER(手动安你就慢了)

因为我是打算跑TC数据集&#xff0c;所以跳过audit安装。 我的Ubuntu使用的是清华源。 1. Parser Setup 1.1 g apt install g1.2 neo4j Ubuntu22.04换什么源都会导致无法定位软件包&#xff0c;添加neo4j的官方源又会导致不信任的源。 22.04以下的版本&#xff0c;直接用命…

div输入框的文字超过指定行数用省略号表示css

实现效果&#xff1a;超过四行用省略号表示 实现方法&#xff1a; .text{overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 4; // 自定义行数-webkit-box-orient: vertical; }

深度学习实战47-利用深度学习技术来解决复杂的人群计数问题,CrowdCountNet模型的应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战47-利用深度学习技术来解决复杂的人群计数问题,CrowdCountNet模型的应用。本篇文章,我将向大家展示如何使用CrowdCountNet这个神奇的工具,以及它是如何利用深度学习技术来解决复杂的人群计数问题。让我们一起进入这个充满…

docker 基础知识

目录 1. 加载docker镜像 2. 显示所有的镜像 3. 执行镜像&#xff0c;生成容器&#xff0c; 每执行一次&#xff0c;便生成一个容器 4. 显示出container名称 5. 进入容器 6. 如何将文件传入容器内 首先要确保已经安装了docker。注意&#xff1a;服务器上若没有管理员权限&am…

Markdown编译器的使用

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Windows安装Go开发环境

Windows安装Go开发环境 一、Go语言下载地址 https://golang.google.cn/dl/ 二、设置工作空间GOPATH目录(Go语言开发的项目路径) 首先进入我的C盘&#xff08;你放到其他盘也行&#xff09;&#xff0c;新建一个文件夹&#xff0c;名字叫做mygo&#xff08;这个就是你的工作目…

问道管理:网上如何打新股?

随着资本市场的不断敞开&#xff0c;越来越多的人开始重视股票市场&#xff0c;并想经过网上打新股来取得更大的出资收益。但是&#xff0c;网上打新股的办法并不简略&#xff0c;怎样才能成功地打新股呢&#xff1f;本文将从多个角度剖析&#xff0c;协助广阔出资者处理这一问…

微软电脑surface键盘无法使用问题解决

昨天下班后&#xff0c;正常关掉电脑&#xff0c;今天来上班发现键盘无法使用了 打人工找到了解决方法 开机->到锁屏页面->使用屏幕键盘输入密码进入电脑 然后右键左下角的win图标 找到设备管理器->键盘 全部右键卸载 再找到设备管理->系统设备 把这个DTX也卸…

做外贸发布产品的最简单的方式

最近和一个朋友聊天&#xff0c;说到他朋友在开某平台的网店&#xff0c;因为抄袭某家的好评而被投诉罚款&#xff0c;而被罚款的原因是这个朋友太懒了&#xff0c;在挑选了一家店铺的好评后&#xff0c;就直接照抄不误&#xff0c;而且全部的好评语都是抄自这同一家的&#xf…

品牌推广革新之道:海外网红与内容营销的融合

随着数字时代的来临&#xff0c;品牌推广的方式正在经历着革命性的变化。传统的广告手段逐渐失去了吸引力&#xff0c;而内容营销正成为品牌推广的新宠儿。尤其是海外网红的崛起&#xff0c;不仅改变了推广方式&#xff0c;更重新定义了品牌与消费者之间的互动关系。本文Nox聚星…

【Vue前端】设置标题用于SEO优化

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 1.vue全局配置2.创建并暴露getPageTitle方法3.通过全局前置守卫设置title4.页面上引用title5.项目使用中英文翻译&#xff0c;title失效 1.vu…

H2Miner变种,利用Redis漏洞入侵云服务器wa矿

H2Miner变种&#xff0c;最主要的特征是&#xff0c;入侵后 redis路径下很明显多了两个可执行的so文件&#xff0c;red2.so 和 exp_lin.so &#xff1b; 该变种利用Redis 4.x/5.x 主从同步命令执行漏洞&#xff08;CNVD-2019-21763&#xff09;攻击云服务器&#xff0c;检测数据…

CCF C³ 走进百度:大模型与可持续生态发展

2023年8月10日&#xff0c;由CCF CTO Club发起的第22期C活动在百度北京总部进行&#xff0c;以“AI大语言模型技术与生态发展”主题&#xff0c;50余位企业界、学界专家、研究人员就此进行深入探讨。 CCF C走进百度 本次活动&#xff0c;CCF秘书长唐卫清与百度集团副总裁、深…

【yml文件的解释】

目录 一、yml的简介二、手写yml文件进行配置三、使用yaml格式导出生成模板四、deployment.yaml文件详解五、Pod yaml文件详解六、Service yaml文件详解 一、yml的简介 Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式&#xff1a;主要用于 api 接口之间消息的传递 Y…

【Linux】应用层之HTTP协议

HTTP协议 应用层协议应用层的作用&#xff1a;为应用程序提供网络服务序列化的意义、为什么要将数据序列化&#xff1f;HTTP协议概述HTTP的协议格式请求响应GET方法和POST方法的出现的场景和区别&#xff1f; 应用层协议 在应用层&#xff0c;需要我们传递应用层所需特殊的数据…

Android中如何不编译源生模块

如果想让自己的app 替换系统的app 比如使用闪电浏览器替换系统的Browser 首先把闪电浏览器放到 vendor/rockchip/common/apps Android.mk LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE : Lightning LOCAL_SRC_FILES : $(LOCAL_MODULE).apk LOCAL_MODULE_C…

LeetCode 0833. 字符串中的查找与替换

【LetMeFly】833.字符串中的查找与替换 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-and-replace-in-string/ 你会得到一个字符串 s (索引从 0 开始)&#xff0c;你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出&#xff1a;indices,…

微信小程序云开发快速入门(3/4)

前言 在《微信小程序云开发快速入门&#xff08;2/4&#xff09;》分享中&#xff0c;我们已经将列表的查询和分页全部搞定了&#xff0c;可以说对于备忘录来说已经非常好用了&#xff0c;此时此刻码仔在脑海中已经开始幻想自己走上了人生的巅峰场景了。 接下来那来分析下需求…

django中使用ajax发送请求

1、ajax简单介绍 浏览器向网站发送请求时 是以URL和表单的形式提交的post 或get 请求&#xff0c;特点是&#xff1a;页面刷新 除此之外&#xff0c;也可以基于ajax向后台发送请求&#xff08;异步&#xff09; 依赖jQuery 编写ajax代码 $.ajax({url: "发送的地址"…