【CSP试题回顾】201403-2-窗口

news2024/9/22 15:38:20

CSP-201403-2-窗口

解题思路

  1. 窗口存储结构:首先,使用一个结构体MyWindow来存储每个窗口的信息,包括窗口的序号(index)和矩形区域的四个顶点坐标(x1, y1, x2, y2)。所有窗口的信息存储在一个向量windowList中。

  2. 输入处理:程序首先接收两个输入值N和M,N表示窗口的数量,M表示点击的数量。接着,程序通过循环读取每个窗口的坐标,并将它们添加到windowList向量中。之后,程序通过另一个循环读取每次点击的坐标。

  3. 点击事件处理:对于每个点击事件,程序从最后一个添加到windowList中的窗口开始逆序遍历,这样可以首先检查最上层的窗口。如果点击的点位于某个窗口的范围内,程序输出该窗口的序号,并将这个窗口移动到向量的末尾,表示这个窗口被移动到了所有窗口的最上层。如果点击的点不在任何窗口的范围内,程序输出“IGNORED”。

  4. 更新窗口顺序(重要):当一个窗口因为点击而被选中时,它会被从列表中移除(删除原有窗口),然后添加到列表的末尾(置于顶层)。这样确保了如果再有点击事件,最新被点击的窗口将会是第一个被检查的。

完整代码

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

struct MyWindow
{
	int index;
	int x1, y1, x2, y2;
};
int N, M;
vector<MyWindow>windowList;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> N >> M;

	// 输入窗口
	for (int i = 0; i < N; i++)
	{
		MyWindow t;
		t.index = i + 1;
		cin >> t.x1 >> t.y1 >> t.x2 >> t.y2;
		windowList.push_back(t);
	}

	// 输入鼠标点击记录
	for (int i = 0; i < M; i++)
	{
		int x, y;
		cin >> x >> y;
		bool isFind = 0; // 标记是否找到点击窗口 1-找到
		// 倒序遍历windowList(先找到序号最大的窗口即最顶部的窗口)
		for (int j = windowList.size() - 1; j >= 0; j--)
		{
			// 鼠标点击在该窗口内
			if (windowList[j].x1 <= x && x <= windowList[j].x2
				&& windowList[j].y1 <= y && y <= windowList[j].y2)
			{
				cout << windowList[j].index << endl;
				isFind = 1;
				
				MyWindow t = windowList[j];
				windowList.erase(windowList.begin() + j); // 删除原有窗口
				windowList.push_back(t); // 置于顶层
				break;
			}	
		}
		if (isFind == 0)
		{
			cout << "IGNORED\n";
		}
	}
    return 0;
}

请添加图片描述

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

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

相关文章

17 easy 290. 单词规律

//给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 // // 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 // // // // 示例1: // // //输入: patte…

一篇文章教会你如何在IOS真机上完美运行React Native

一篇文章教会你如何在IOS真机上完美运行React Native 项目初始化项目配置可能遇到的问题没有账号也没有Team设备上没有打开开发者模式&#xff0c;也没有信任开发者证书 无线调试 项目初始化 在终端使用**npx react-native init ProjectName**初始化React Native项目。 进入项…

selenuim【1】$x(‘xpath’)、WebDriverWait()、try/assert

文章目录 1、执行driver webdriver.Chrome()后很久才打开浏览器2、浏览器多元素定位 $x(‘xpath语法’)3、打开浏览器driver.get("网址")执行了很久才开始定位元素&#xff1a;等待&#xff08;1&#xff09;driver.set_page_load_timeout(t)&#xff08;2&#xff…

Live Home 3D Pro:您的私人家居设计师,让家更有温度

Live Home 3D Pro是一款功能强大的家居设计软件&#xff0c;它凭借直观的用户界面和丰富的设计工具&#xff0c;为用户提供了一个全新的家居设计体验。无论您是专业设计师还是普通用户&#xff0c;Live Home 3D Pro都能帮助您轻松实现家居设计的梦想。 Live Home 3D Pro mac版…

枚举与尺取法(蓝桥杯 c++ 模板 题目 代码 注解)

目录 组合型枚举&#xff08;排列组合模板&#xff08;&#xff09;&#xff09;: 排列型枚举&#xff08;全排列&#xff09;模板&#xff1a; 题目一&#xff08;公平抽签 排列组合&#xff09;&#xff1a; ​编辑 代码&#xff1a; 题目二&#xff08;座次问题 全排…

财报解读:基本盘稳定后,联想如何进一步抢占AI时代?

从2021年下半年开始&#xff0c;受诸多因素影响&#xff0c;消费电子行业始终处在承压状态&#xff0c;“不景气”这一关键词屡次被市场提及。 但寒气没有持续&#xff0c;可以看到&#xff0c;消费电子行业正在逐渐回暖。国金证券在今年1月的研报中就指出&#xff0c;从多方面…

学习python时一些笔记

1、winr 命令提示符的快捷键 输入cmd进入终端 2、在终端运行桌面上的python文件 cd desktop(桌面) cd是进入该文件夹的意思。 cd .. 回到上一级 运行python时一定要找到文件的所在地 输入python进入&#xff0c;exit()退出%s字符串占位符%d数字占位符%f浮点数占位符input输…

手把手教你零成本获客的教育培训小程序

随着科技的发展&#xff0c;数字化教育成为现代教育的趋势。为了满足教育培训机构的需求&#xff0c;许多教育培训小程序搭建平台应运而生。今天&#xff0c;我们将为大家介绍一种简单快捷的搭建教育培训小程序的方法。 首先&#xff0c;登录【乔拓云】制作平台&#xff0c;进入…

Java毕业设计 基于SpringBoot vue 社团管理系统

Java毕业设计 基于SpringBoot vue 社团管理系统 SpringBoot vue 社团管理系统 功能介绍 社团成员: 登录 首页 社团列表 加入社团申请 我的社团 在线留言 社长: 登录 首页 用户信息管理 入团申请管理 社团活动管理 社团成员管理 社团新闻管理 社团费用管理 系统管理员: 登录…

汽车碰撞与刮伤的实用维修技术,汽车的车身修复与涂装修补教学

一、教程描述 本套汽车维修技术教程&#xff0c;大小7.44G&#xff0c;共有60个文件。 二、教程目录 01-汽车车身修复教程01-安全规则&#xff08;共3课时&#xff09; 02-汽车车身修复教程02-汽车结构&#xff08;共3课时&#xff09; 03-汽车车身修复教程03-汽车修复所使…

复合数据类型(ch3)

将array依次执行以下操作 1.把列表中的元素升序排序。 2.删除列表中的最后一个元素。 3.把列表中第一个元素移动到列表尾部。 4.返回新列表。array [85,96,2,5,3,566,0,91,5234,5555,89,62,34] #*******请输入您的代码********# #***********begin************# def sort_and_…

Groovy(第五节) Groovy 之集合

Groovy 可以直接在语言内使用集合。在 Groovy 中,不需要导入专门的类,也不需要初始化对象。集合是语言本身的本地成员。Groovy 也使集合(或者列表)的操作变得非常容易,为增加和删除项提供了直观的帮助。 可以将范围当作集合 在前一节学习了如何用 Groovy 的范围将循环变得…

项目中遇到的耗时点-(图片缩放里面添加的标记红圈无法缩放)

实现效果 1、需求&#xff1a;显示服务端返回的在线url图片&#xff0c;并且根据标记圈的坐标点和半径绘制到图片上 分析&#xff1a;由于涉及到图片上加标记&#xff0c;可考虑的方案有 1、加个父布局&#xff0c;里面嵌入两个ImageView 2、自定义ImageView、使其支持标图 …

【网站项目】182在线作业管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

docker配置数据默认存储路径graph已过时,新版本中是data-root

错误信息 我在修改/etc/docker/daemon.json文件中&#xff0c;添加存储路径graph字段。然后sudo systemctl restart docker包如下错误&#xff1a;使用journalctl -xeu docker.service错误信息&#xff0c;发现不能匹配graph字段。 原因 我的docker版本&#xff1a; 在doc…

【计算机那些事】

目录 【云计算】 【原神用的是UDP还是TCP】 【几个特殊地址】 【socket是什么】 【内网穿透是什么】 【为什么有HTTP协议&#xff0c;还要有websocket协议】 【科普路由器&#xff0c;集线器&#xff0c;交换机&#xff0c;网桥&#xff0c;光猫】 【USB接口那些事】 …

【Python】进阶学习:pandas--rename()用法详解

【Python】进阶学习&#xff1a;pandas-- rename()用法详解 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的…

ZYNQ PS 读取 TF 卡 BIN 文件中的浮点数

动机 在进行 AI 算法加速器设计时&#xff0c;需要读取模型导出的权重和数据集数据作为加速器的输入&#xff0c;而目前我个人比较常用的做法是将权重和数据集(如果数据集过大&#xff0c;可以选择一两张图片)放到 SD/TF 卡中&#xff0c;然后 PS CPU核去进行数据读取&#xff…

Spring:FactoryBean预加载逻辑以及自定义实现Mybatis的接口扫描

Spring&#xff1a;FactoryBean预加载逻辑以及自定义实现Mybatis的接口扫描 1 前言 参考Mybatis框架的Mapper注解扫描Mapper接口的业务逻辑&#xff0c;其中集成Spring的逻辑里使用到了Spring框架的FactoryBean拓展点&#xff0c;本文针对Spring FactoryBean的加载流程进行分…