首届CCF真题2-窗口

问题描述

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

输入格式

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

输出格式

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

输入样例

34 0044

2

1155 2266 11 00 44 05

输出样例

2
1
1
IGNORED

对样例的解释

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

没啥好说的,直接对二维数组更新表示顶层窗口就好。注意局部变量默认栈大小1m,不够申请2560*1440的数组,要用全局变量。
 1 #include <iostream>
 2
 3 using namespace std;
 4
 5 int screen[2560][1440];
 6
 7 int main(){
 8     int n,m;
 9     cin>>n>>m;
10     int page[n+1][4];
11     for(int i=1;i<=n;i++)
12     {
13         int x1,x2,y1,y2;
14         cin>>x1>>y1>>x2>>y2;
15         page[i][0]=x1;
16         page[i][1]=y1;
17         page[i][2]=x2;
18         page[i][3]=y2;
19         for(int p=x1;p<=x2;p++)
20             for(int q=y1;q<=y2;q++)
21                 screen[p][q] = i;
22     }
23     for(int i=0;i<m;i++)
24     {
25         int x,y;
26         cin>>x>>y;
27         int num = screen[x][y];
28         if(num == 0)
29         {
30             cout<<"IGNORED"<<endl;
31         }
32         else
33         {
34             cout<<num<<endl;
35             int x1(page[num][0]),y1(page[num][1]),x2(page[num][2]),y2(page[num][3]);
36             for(int p=x1;p<=x2;p++)
37                 for(int q=y1;q<=y2;q++)
38                     screen[p][q] = num;
39         }
40     }
41     return 0;
42 }
时间: 2024-08-09 05:41:32

首届CCF真题2-窗口的相关文章

首届CCF真题3-命令行选项

问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字 符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序不用 对它进行处理.在工具名字之后可能会包含若干选项,然后可能会包含一些不是选项的参数. 选项有两类:带参数的选项和不带参数的选项.一个合法的无参数选项的形式是一个减号后面跟单个小写字母,如"-a" 或"-b".而带参数 选项则由两个由空格分隔的字符串构成,前者的格式要求

首届CCF真题1-相反数

问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对 相反数(a 和 −a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过 1 000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 输入样例 5 1 2 3 -1 -2 输出样例 2  1 #include <iostream> 2 #include <map> 3 4 u

首届CCF真题5-任务调度

问题描述 有若干个任务需要在一台机器上运行.它们之间没有依赖关系,因此 可以被按照任意顺序执行. 该机器有两个 CPU 和一个 GPU.对于每个任务,你可以为它分配不 同的硬件资源: 1. 在单个 CPU 上运行. 2. 在两个 CPU 上同时运行. 3. 在单个 CPU 和 GPU 上同时运行. 4. 在两个 CPU 和 GPU 上同时运行. 一个任务开始执行以后,将会独占它所用到的所有硬件资源,不得中 断,直到执行结束为止.第 i 个任务用单个 CPU,两个 CPU,单个 CPU 加 GPU

首届CCF真题4-无线网络

问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都 固定在某个点上.任何两个无线路由器只要距离不超过 r 就能互相建立网 络连接. 除此以外,另有 m 个可以摆放无线路由器的位置.你可以在这些位置 中选择至多 k 个增设新的路由器. 你的目标是使得第 1 个路由器和第 2 个路由器之间的网络连接经过尽 量少的中转路由器.请问在最优方案下中转路由器的最少个数是多少? 输入格式 第一行包含四个正整数 n,m,k,r.(2 ≤ n ≤ 100,1 ≤ k ≤ m ≤ 100,

给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1(ccf真题)

ccf认证考试2014年9月第一题 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示给定整数的个数. 第二行包含所给定的n个整数. 输出格式 输出一个整数,表示值正好相差1的数对的个数. 样例输入 6 10 2 6 3 7 8 样例输出 3 样例说明 值正好相差1的数对包括(2, 3), (6, 7), (7, 8). 评测用例规模与约定 1<=n<=1000,给定的整数为不超过10000的非负整数. #include<

图像旋转(ccf真题)

ccf认证2015年3月第一题 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可. 输入格式 输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数. 接下来n行每行包含m个整数,表示输入的图像. 输出格式 输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵. 样例输入 2 3 1 5 3 3 2 4 样例输出 3 4 5 2 1 3 评测用例规模与约定

CCF真题之最优灌溉

201412-4 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被灌溉,则与其连接的麦田也能被灌溉. 现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用(注意不是所有麦田之间都可以建立水渠).请问灌溉所有麦田最少需要多少费用来修建水渠. 输入格式 输入的第一行包含两个正整数n, m,

14年12月CCF真题5-货物调度

问题描述 某公司要处理一个周期性的物流问题. 有n个城市,第i个城市在每周的第j(1≤j≤7) 天会生产aij吨某种货物,同时 需要消耗bij吨该种货物.已知每周的产量等于消耗量(即aij之和等于bij之和). 城市之间有m条道路,第k条道路连接了城市sk和tk.一条道路上运输1吨 货物有一个固定的成本ck.道路都可以双向使用.每天运输的货物量没有限制.城市之间的距离并不远,货物可以从任意一个城市运输到任意另一个城市并且在当天到达. 货物如果在当天没有被消耗掉,就需要存放在仓库里过夜.第i个城市

CCF真题之字符串匹配

201409-3 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一个字母的大写和小写看作相同的字符. 输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成. 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感. 第三行包含一个整数n,表示给出的文字的行数. 接下来n行,每行包含一个字符串,字符串由大小写英文字