CCF CSP 201403-2 窗口

摘要:
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址CCFCSP201403-2窗口问题描述在某图形操作系统中,有N个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。每行包含四个非负整数x1,y1,x2,y2,表示该窗口的一对顶点坐标分别为和。样例输入3400441155226611004405样例输出211IGNORED样例说明第一次点击的位置同时属于第1和第2个窗口,但是由于第2个窗口在上面,它被选择并且被置于顶层。

CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址

CCF CSP 201403-2 窗口

问题描述

在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。
当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。
现在我们希望你写一个程序模拟点击窗口的过程。

输入格式

输入的第一行有两个正整数,即 N 和 M。(1 ≤ N ≤ 10,1 ≤ M ≤ 10)
接下来 N 行按照从最下层到最顶层的顺序给出 N 个窗口的位置。 每行包含四个非负整数 x1, y1, x2, y2,表示该窗口的一对顶点坐标分别为 (x1, y1) 和 (x2, y2)。保证 x1 < x2,y1 2。
接下来 M 行每行包含两个非负整数 x, y,表示一次鼠标点击的坐标。
题目中涉及到的所有点和矩形的顶点的 x, y 坐标分别不超过 2559 和  1439。

输出格式

输出包括 M 行,每一行表示一次鼠标点击的结果。如果该次鼠标点击选择了一个窗口,则输出这个窗口的编号(窗口按照输入中的顺序从 1 编号到 N);如果没有,则输出"IGNORED"(不含双引号)。

样例输入

3 4
0 0 4 4
1 1 5 5
2 2 6 6
1 1
0 0
4 4
0 5


样例输出

2
1
1
IGNORED


样例说明

第一次点击的位置同时属于第 1 和第 2 个窗口,但是由于第 2 个窗口在上面,它被选择并且被置于顶层。
第二次点击的位置只属于第 1 个窗口,因此该次点击选择了此窗口并将其置于顶层。现在的三个窗口的层次关系与初始状态恰好相反了。
第三次点击的位置同时属于三个窗口的范围,但是由于现在第 1 个窗口处于顶层,它被选择。
最后点击的 (0, 5) 不属于任何窗口。

解析

用一个数组记录窗口的坐标

用一个数组模拟屏幕,记录每一个像素位于顶端的窗口编号

如果一个像素被点击,获取窗口的编号,查询窗口的坐标,然后在屏幕上该窗口范围内修改编号为该窗口的编号。

代码

C++

#include "iostream"

using namespacestd;

int corner[11][4]; //the upper left and lower rigtht corner coordinates
int screen[2600][1440]; //record the top window index

intmain() {
  intn, m;
  cin >> n >>m;
  for(int i=1; i<=n; i++)
  {
    cin >> corner[i][0] >> corner[i][1] >> corner[i][2] >> corner[i][3];
    for(int j=corner[i][0]; j<=corner[i][2]; j++) 
    {
      for(int k=corner[i][1]; k<=corner[i][3]; k++)
      {
        screen[j][k] =i;
      }
    }
  }
  for(int i=0; i<m; i++) 
  {
    intx, y;
    cin >> x >>y;
    int idx =screen[x][y];
    if(idx > 0)
    {
      cout << idx <<endl;
      for(int j=corner[idx][0]; j<=corner[idx][2]; j++) 
      {
        for(int k=corner[idx][1]; k<=corner[idx][3]; k++)
        {
          screen[j][k] =idx;
        }
      }    
    }
    elsecout << "IGNORED" <<endl;
  }
}

免责声明:文章转载自《CCF CSP 201403-2 窗口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【opencv.js】边界扩展layui从子iframe打开父iframe的tab选项卡下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSP/NOIP c++常用模板

蒟蒻目前还是提高组选手,模板将会持续更新!目录: 线段树 对拍 exgcd st 树状数组 树剖 dijsktra spfa tarjan 匈牙利 埃筛 差分树状数组 dinic 快速幂取余 Exgcd #include<bits/stdc++.h> using namespace std; int exgcd(int a,int b,int...

About Cryptography

Microsoft® Cryptography CSPs In Microsoft Windows, a Cryptographic Service Provider (CSP) is a software library that implements the Microsoft CryptoAPI (CAPI). Each CSP has a key...

dll签名两种方法

以下两种签名方法,都是对csp.dll签名,都不是CA颁发的,且效果不同, 一:通过自建证书签名 下载windows sdk,成功安装后,包括makecert.exe, cert2spc.exe, pvk2pfx.exe, signtool.exe工具,将要签名的csp.dll也放入工具文件夹,cmd命令切换到工具文件夹。再运行以下命令 1.生成签名证...

Web安全之CSP

内容安全策略(Content-Security-Policy,简称CSP) 概念:          内容安全策略(CSP)是一种web应用技术用于帮助缓解大部分类型的内容注入攻击,包括XSS攻击和数据注入等,这些攻击可实现数据窃取、网站破坏和作为恶意软件分发版本等行为。该策略可让网站管理员指定客户端允许加载的各类可信任资源。 浏览器支持:   统计来源:...

Java的Maven项目的导入

csp_maven项目的拉取与导入。18年做过,然后当时项目是汪老板帮忙调的,也没记录。特此记录。 插曲: 相关技术博文:https://blog.csdn.net/qq_40961980/article/details/86236498(安装maven与查看maven版本) --------------------------- 正文分割线-----...

NOIP(CSP)答题技巧&amp;amp;小细节

1.主函数类型 通常使用int main(),然而可以使用完全等价的signed main() 解锁 #define int long long  的操作 2.long long 的使用 数列长度/边数 * 最大点权爆掉int就要使用ll 注意使用long long的时候更改最大值 3.编译器配置 有的时候编译器能查出很多错 第一次安装Dev-c++编译器...