洛谷C++简单题练习day6—P1830 城市轰炸

news2024/10/3 2:27:37

day6--P1830 城市轰炸--1.26

习题概述

题目背景

一个大小为 n×m 的城市遭到了 x 次轰炸,每次都炸了一个每条边都与边界平行的矩形。

题目描述

在轰炸后,有 y 个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次最后一次是第几轮

输入格式

第一行共四个整数,分别为n,m,x,y。

接下来 x 行,每行四个整数 x1​,y1​,x2​,y2​,表示被轰炸的矩形的左上角坐标和右下角坐标 b比如 1,3,7,10   ( 1,3,7,10就表示被轰炸的地方是从(1,3) 到(7,10) 的矩形。)

接下来 y 行,每行两个整数,表示这个关键点的坐标。

输出格式

输出共 y 行,每行第一个字符为 Y 或 N,表示是否被轰炸;若为 Y,在一个空格后为两个整数,表示被炸了几次和最后一次是第几轮。

代码部分

#include<bits/stdc++.h>//令人兴奋的万能头
using namespace std;

int n,m,x,y,xx,yy,xxx,yyy,a[101][101],b[101][101]; 
int main()
{
   //n、m、x、y 表示城市行、列、轰炸次数(被炸的矩形的数量)、关键点数量(需要查询的点的数量) 
    cin>>n>>m>>x>>y;
    for(int i=1;i<=x;++i)
    {
	     //输入轰炸的左上角坐标和右下角坐标
    	 cin>>xx>>yy>>xxx>>yyy;
	     //遍历被轰炸矩形的行坐标,从左上角的行坐标 xx 遍历到右下角的行坐标 xxx
         for(int ii=xx;ii<=xxx;++ii)
          //遍历被轰炸矩形的列坐标,从左上角的列坐标 yy 遍历到右下角的列坐标 yyy
    	   for(int jj=yy;jj<=yyy;++jj)
           {
              ++a[ii][jj]; //把此坐标轰炸的次数加1
              b[ii][jj]=i; //把值改成最后轰炸的一轮(记录最后一次轰炸发生在第几轮)
           }
	 }
     for(int i=1;i<=y;++i)//枚举关键点
     {
    	  cin>>xx>>yy;//输入第i个关键点的坐标
    	  if(a[xx][yy]==0)//判断此关键点有没有被炸过
    	     cout<<"N\n";else//没炸过输出N
    	     //否则输出Y、此关键点被轰炸次数和最后轰炸的一轮
    	      cout<<"Y "<<a[xx][yy]<<' '<<b[xx][yy]<<"\n";
      }
      return 0;
}

心得体会

1.下面是该小练习的轰炸情况:

2.下面是标注了具体输入输出语句的运行结果:

3.思路如下:

整体思路:是首先根据输入的轰炸信息,记录每个格子被轰炸的次数和最后一次轰炸的轮数。然后根据查询的关键点,判断其是否受到过轰炸,并输出相应的结果。

具体思路

1)从标准输入读取城市的行数 n、列数 m、轰炸次数 x 和关键点数量 y

2)使用循环,依次处理每次轰炸的矩形区域。

   (1)从标准输入读取被轰炸矩形的左上角坐标 (xx, yy) 和右下角坐标 (xxx, yyy)

   (2)使用嵌套循环遍历被轰炸矩形区域内的每个格子

   (3)在每个格子上,将数组 a 中对应位置的值增加1,表示该位置被轰炸的次数。

   (4)将数组 b 中对应位置的值设置为当前轰炸的轮数。

3)使用循环,依次处理每个关键点的查询。

   (1)如果关键点在数组 a 中对应位置的值不为0,则输出 "Y",后面跟着被轰炸的次数和最后一 次轰炸的轮数。

   (2)检查关键点在数组 a 中对应位置的值,如果为0,则输出 "N",表示该关键点未受到轰炸。     (3)从标准输入读取关键点的坐标 (xx, yy)

4)输出结果到标准输出。

4.拿到题后观察输入输出的示例其实很重要,从中可以梳理出大致的程序结构。

5.附带批注具体的文字的代码

#include<bits/stdc++.h>//令人兴奋的万能头
using namespace std;

int n,m,x,y,xx,yy,xxx,yyy,a[101][101],b[101][101]; 
int main()
{
//n、m、x、y 表示城市行、列、轰炸次数(被炸的矩形的数量)、关键点数量(需要查询的点的数量) 
      cout << "请输入城市的行数、列数、轰炸次数和关键点数量:";
      cin>>n>>m>>x>>y;
        cout << "请依次输入每次轰炸的矩形区域信息!" << endl;
    	for(int i=1;i<=x;++i)
     	{
	     //输入轰炸的左上角坐标和右下角坐标
	     cout << "输入第 " << i << " 次轰炸的左上角坐标和右下角坐标:";
    	 cin>>xx>>yy>>xxx>>yyy;
	     //遍历被轰炸矩形的行坐标,从左上角的行坐标 xx 遍历到右下角的行坐标 xxx
         for(int ii=xx;ii<=xxx;++ii)
          //遍历被轰炸矩形的列坐标,从左上角的列坐标 yy 遍历到右下角的列坐标 yyy
    	   for(int jj=yy;jj<=yyy;++jj)
           {
              ++a[ii][jj]; //把此坐标轰炸的次数加1
              b[ii][jj]=i; //把值改成最后轰炸的一轮(记录最后一次轰炸发生在第几轮)
           }
	    }
	    cout << "请依次输入每个关键点的坐标!" << endl;
        for(int i=1;i<=y;++i)//枚举关键点
        {
          cout << "输入第 " << i << " 个关键点的坐标:";
    	  cin>>xx>>yy;//输入第i个关键点的坐标
    	  if(a[xx][yy]==0)//判断此关键点有没有被炸过
    	     cout<<"N 关键点未受到轰炸";//没炸过输出N
		  else
    	     //否则输出Y、此关键点被轰炸次数和最后轰炸的一轮
    	    cout<<"Y 关键点受到轰炸"<<",被轰炸次数为"<<a[xx][yy]<< ",最后一次轰炸的轮数为 " <<b[xx][yy]<<"\n";
        }
        return 0;
}

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

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

相关文章

Android Settings 显示电池点亮百分比

如题&#xff0c;Android 原生 Settings 里有个 电池电量百分比 的选项&#xff0c;打开后电池电量百分比会显示在状态栏。 基于 Android 13 &#xff0c; 代码在 ./packages/apps/Settings/src/com/android/settings/display/BatteryPercentagePreferenceController.java &am…

CSS如何设置谷歌浏览器字体小于12px

第一种方法 在浏览器的设置中修改&#xff0c;不过只能修改自己的浏览器字体大小&#xff0c;用户的不行 点击设置 找到自定义字体 修改字体大小 第二种方法 使用2D转换 scale() 当我们想设置字体大小为6px的时候 大家要记住&#xff0c;只能在块盒与行块盒中设置&#xf…

6.【SpringBoot3】登录优化-redis

1. SpringBoot 集成 redis 示例 在之前实现的登录接口中&#xff0c;用户登录成功后会生成一个令牌响应给浏览器&#xff0c;之后浏览器访问其他接口时&#xff0c;都要携带该令牌&#xff0c;接受拦截器的检验&#xff0c;如果令牌有效就放行&#xff0c;允许访问后续接口&am…

【代码随想录-数组】二分查找

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

如何在Vue项目中应用TypeScript?

文章目录 一、前言二、使用Componentcomputed、data、methodspropswatchemit 三 、总结 一、前言 与link类似 在VUE项目中应用typescript&#xff0c;我们需要引入一个库vue-property-decorator&#xff0c; 其是基于vue-class-component库而来&#xff0c;这个库vue官方推出…

基于固件库的RT-THREAD移植

为什么要使用操作系统 当我们进入嵌入式这个领域的时候&#xff0c; 往往首先接触的都是单片机编程&#xff0c; 单片机编程又首选 51 单片机来入门。 这里面说的单片机编程通常都是指裸机编程&#xff0c;即不加入任何 RTOS&#xff08;Real Time Operation System 实时操作系…

独占指针:unique_ptr 与 函数调用 笔记

推荐B站视频&#xff1a; 2.unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p2&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 3.unique_ptr与函数调用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p3&vd_sourcea934d…

如何阅读xml电子发票

xml电子发票是官方给出的电子存档的文件格式&#xff0c;本质是文本&#xff0c;所以文件很小&#xff0c;大量发票存储&#xff0c;能够更加凸显优势。 但是xml电子发票不方便阅读&#xff0c;因为里面是xml格式&#xff0c;对于财务人员来讲&#xff0c;看“代码”简直太难了…

Android App开发基础(3)——App的设计规范

3 App的设计规范 本节介绍了App工程的源码设计规范&#xff0c;首先App将看得见的界面设计与看不见的代码逻辑区分开&#xff0c;然后利用XML标记描绘应用界面&#xff0c;同时使用Java代码书写程序逻辑&#xff0c;从而形成App前后端分离的设计规约&#xff0c;有利于提高App集…

CSMA/CD 协议——笔记

目录 CSMA/CD 协议 以太网采取的 2 种重要措施 CSMA/CD 协议的要点 CSMA/CD 协议工作流程 碰撞后重传的时机 CSMA/CD 协议的要点 CSMA/CD 协议 最早的以太网&#xff1a;将许多计算机都连接到一根总线上。 总线特点&#xff1a;易于实现广播通信&#xff0c;简单&…

Linux详细笔记大全

第0章 Linux基础入门 什么是计算机 计算机的组成: 控制器,是整个计算机的中枢神经,根据程序要求进行控制,协调计算机各部分工作及内存与外设的访问等。 运算器,功能是对数据进行各种算术运算和逻辑运算。 存储器,功能是存储程序、数据和各种信号、命令等信息。 输入设备…

JavaScript 学习笔记(WEB APIs Day6)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. JavaScript 学习笔记&#xff08;Day1&#xff09; 2. JavaSc…

网页首页案例(使用框架:继上一篇博客结尾)

文章目录 新认识的快捷键1.先写好组件并导入App.vue2.往组件中一个一个填内容3.整体静态完成后&#xff0c;发现某些小部分相同&#xff0c;其实可以分装成小组件4.最后通过js动态渲染 新认识的快捷键 1.Ctrl滚轮按住往下拖可以部分选中 .用同样的方法选中下面的111&#xff0…

temu跨境电商怎么样?做temu蓝海项目有哪些优势?

在全球电商市场激烈的竞争中&#xff0c;Temu跨境电商平台以其独特的优势和策略&#xff0c;逐渐崭露头角。对于许多想要拓展海外市场的商家来说&#xff0c;Temu的蓝海项目提供了一个充满机遇的新平台。本文将深入探讨Temu跨境电商的优势以及在蓝海市场中的发展前景。 全球化市…

32人联机自建服务器攻略【幻兽帕鲁多人游玩】

创建幻兽帕鲁服务器1分钟部署教程&#xff0c;阿里云和腾讯云均推出幻兽帕鲁服务器服务器和部署教程&#xff0c;4核16G和4核32G配置可选&#xff0c;阿腾云atengyun.com分享1分钟自建幻兽帕鲁Palworld服务器教程&#xff1a; 幻兽帕鲁服务器创建教程 幻兽帕鲁服务器官方推荐…

JavaScript DOM对象的尺寸和位置详解

在DOM对象操作中&#xff0c;其尺寸和位置也是DOM的核心内容&#xff0c;因为js的“交互式应用”几乎少不了对DOM对象的尺寸和位置进行操作&#xff0c;特别是js动画效果。 一、关于DOM对象的尺寸和位置介绍 二、DOM文档对象的尺寸 1、obj.scrollWidth 和 obj.scrollHeight …

MATLAB环境下使用训练好的卷积神经网络进行大地电磁数据噪声抑制

大地电磁MT是一种比较成熟的地球物理勘探方法&#xff0c;通过计算地面测量的正交电场分量和磁场分量的扰动值研究地下介质的电性结构。MT在油气和工程勘探领域得到了广泛应用。但是由于该方法以天然电磁场为场源&#xff0c;存在地面信号弱和源激发随机的缺点&#xff0c;极易…

Doris 与 Clickhouse 对比(一)

1. 常用引擎 ☕️ Doris 表数据模型 duplicate key &#x1f3ac; 场景&#xff1a;适用于数据无需提前聚合的分析业务。 ⚠️ 注意点&#xff1a;只指定排序列&#xff0c;相同的行并不会合并。 unique key &#x1f3ac; 场景&#xff1a;适用于有更新需求的业务。 ⚠…

Dlearning

Deep Learning Basic 神经网络&#xff1a; #mermaid-svg-rR22a8Udy5SxGOoP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rR22a8Udy5SxGOoP .error-icon{fill:#552222;}#mermaid-svg-rR22a8Udy5SxGOoP .error-t…

JPDA框架和JDWP协议

前言 在逆向开发中,一般都需要对目标App进行代码注入。主流的代码注入工具是Frida,这个工具能稳定高效实现java代码hook和native代码hook,不过缺点是需要使用Root设备,而且用js开发,入门门槛较高。最近发现一种非Root环境下对Debug App进行代码注入的方案,原理是利用Jav…