缺失的拼图

#1552 : 缺失的拼图

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

小Hi在玩一个拼图游戏。如下图所示,整个拼图是由N块小矩形组成的大矩形。现在小Hi发现其中一块小矩形不见了。给定大矩形以及N-1个小矩形的顶点坐标,你能找出缺失的那块小矩形的顶点坐标吗?

输入

第一行包含一个整数,N。

第二行包含四个整数,(X0, Y0), (X‘0, Y‘0),代表大矩形左下角和右上角的坐标。

以下N-1行每行包含四个整数,(Xi, Yi), (X‘i, Y‘i),代表其中一个小矩形的左下角和右上角坐标。

对于30%的数据, 1 <= N <= 1000

对于100%的数据,1 <= N <= 100000 所有的坐标(X, Y)满足 0 <= X, Y <= 100000000

输出

输出四个整数(X, Y), (X‘, Y‘)代表缺失的那块小矩形的左下角和右上角的坐标。

样例输入

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

样例输出

2 1 3 2

//社会社会。。。其实,就是把所有矩形的顶点计数,如果是奇数,那么必定是,缺失的部分!

 1 # include <cstdio>
 2 # include <cstring>
 3 # include <cstdlib>
 4 # include <iostream>
 5 # include <vector>
 6 # include <queue>
 7 # include <stack>
 8 # include <map>
 9 # include <bitset>
10 # include <sstream>
11 # include <set>
12 # include <cmath>
13 # include <algorithm>
14 # pragma  comment(linker,"/STACK:102400000,102400000")
15 using namespace std;
16 # define LL          long long
17 # define pb          push_back
18 # define pr          pair
19 # define mkp         make_pair
20 # define lowbit(x)   ((x)&(-x))
21 # define PI          acos(-1.0)
22 # define INF         0x3f3f3f3f3f3f3f3f
23 # define eps         1e-8
24 # define MOD         1000000007
25
26 inline int scan() {
27     int x=0,f=1; char ch=getchar();
28     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘) f=-1; ch=getchar();}
29     while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();}
30     return x*f;
31 }
32 inline void Out(int a) {
33     if(a<0) {putchar(‘-‘); a=-a;}
34     if(a>=10) Out(a/10);
35     putchar(a%10+‘0‘);
36 }
37 # define MX 100005
38 /**************************/
39 int n;
40 map<pr<int,int>,int> vis;
41 vector<pr<int,int> > v;
42
43 int main ()
44 {
45     n = scan();
46     int minX,minY,maxX,maxY;
47     minX = scan();minY = scan();
48     maxX = scan();maxY = scan();
49
50     v.pb( mkp(minX,minY) );
51     vis[ mkp(minX,minY) ]++;
52
53     v.pb( mkp(minX,maxY) );
54     vis[ mkp(minX,maxY) ]++;
55
56     v.pb( mkp(maxX,minY) );
57     vis[ mkp(maxX,minY) ]++;
58
59     v.pb( mkp(maxX,maxY) );
60     vis[ mkp(maxX,maxY) ]++;
61
62     for (int i=1;i<=n-1;i++)
63     {
64         int xx,yy,pp,kk;
65         xx = scan(); yy = scan();
66         pp = scan(); kk = scan();
67         if (vis[ mkp(xx,yy) ]==0) v.pb( mkp(xx,yy) );
68         vis[ mkp(xx,yy) ]++;
69
70         if (vis[ mkp(xx,kk) ]==0) v.pb( mkp(xx,kk) );
71         vis[ mkp(xx,kk) ]++;
72
73         if (vis[ mkp(pp,yy) ]==0) v.pb( mkp(pp,yy) );
74         vis[ mkp(pp,yy) ]++;
75
76         if (vis[ mkp(pp,kk) ]==0) v.pb( mkp(pp,kk) );
77         vis[ mkp(pp,kk) ]++;
78     }
79
80     int xxx = INF, yyy = INF, XXX = 0, YYY = 0;
81     for (int i=0;i<v.size();i++)
82     {
83         if (vis[v[i]]%2==0) continue;
84         xxx = min(xxx,v[i].first); yyy = min(yyy,v[i].second);
85         XXX = max(XXX,v[i].first); YYY = max(YYY,v[i].second);
86     }
87     printf("%d %d %d %d\n",xxx,yyy,XXX,YYY);
88     return 0;
89 }

时间: 2024-12-27 20:06:44

缺失的拼图的相关文章

adb命令详解(二)——手机缺失sqlite3时操作数据库的多种解决方案

在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 下面我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方案. 1.当手机缺失sqlite3时,如何操作数据库 先来看看手机缺失sqlite3时候的效果图: 这个时候你想操作刚刚编写应用程序中执行的数据库文件内容,显然是执行不了sql语句的.下面我们将介绍三种方法让你可以查看应用程序下的数据库文件: ㈠向手机导入sqlite3文件 ①第一步,下载sqlite

【Demo】拼图小游戏 winform (二) 只能在空格区域移动的拼图

与第一篇一样,同属简单Demo,这个在开始做的时候,想的是将PictureBox拖动到另一个PictureBox上,如果PictureBox没图片,就将Image传递,但想法是简单的,事实是复杂的:首先PictureBox不支持DragEnter和DragDrop事件,所以后面将图片的载体换成了Panel:其次图片全随机打乱不行,第一行的最后一张图片是不能随机的,必须为特定图片(当然这是因为这个Demo是所有小图都存在的,其实也可以做成随机取消一块图片的拼图游戏,只要在此Demo上做些调整):最

【安卓开源】安卓拼图实现,数据驱动,可记录图片位置參数,希望大家有兴趣一起完好、!

简单的"拼图"实现 1.可自由显示多张图片,每张可自由移动.旋转.缩放 2.基于json的图形位置參数存储 3.手动摆放位置后,可记录位置參数至文件 兴许: 1.切换图形位置时加上渐变动画 2.眼下录入的參数为绝对參数,没有相对手机宽度做相对參数,后期完好 ... 欢迎大家一起来丰富一些有趣的功能.!

拼图问题-打乱的图能否还原

这周web作业,做个小小的拼图游戏,想到了随机打乱的拼图能否还原的问题,参考了博文逆序数奇偶性判断. 自己理解如下,对于一个拼图原来的情况可以简化如下:1 2 34 5 67 8 0以行优先原则排列为123456780交换0与其他元素x的位置:B1 S1 x B2 S2 0其中B1为原来x之前比x大的,S1为原来x之前比x小的,B2,S2类比因为0最小所以可以不用分类了.原来的逆序数为B1+S1+1+B2+S2+B1+S2(这里只考虑将会改变的部分)后来的为B1+B2+B1+ S1差为2S2+1

关于Mac安装PHP相关扩展出现Zend/zend_config.h缺失的问题记录

Mac升级之后,系统自带的php版本也会随之升级,我用的就是系统自带的版本 麻烦的是扩展在版本变更后需要重新编译安装 重新安装redis  xdebug 等扩展时却会遇到各种头文件缺失的问题 之前从php官网下载php源码包解压之后,放到提示缺失文件的目录中,就可以解决这个问题. 后来也有自己重新编译覆盖安装过PHP,不过感觉都比较繁琐,... 常见的错误提示如下(redis) In file included from /usr/include/php/main/php.h:35: /usr/

Build path 的 缺失

问题 : build path 缺失 如图: 原本应该是: 解决办法是: Eclipse 右上角的代码视图,选择Java就好了! 点击右键 选择Java或javaEE 就好了

Python下载区域雷达拼图

下载某一天某区域全部的雷达拼图 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 quyu = {'东北': 'ANEC', '华北': 'ANCN', '华东': 'AECN', '华中': 'ACCN', 4 '华南': 'ASCN', '西南': 'ASWC', '西北': 'ANWC', '长江': 'ABCJ', 5 '黄淮': 'ABHH', '东南沿海': 'ACES', '全国': 'ACHN'} 6 7 8 def get

lintcode 中等题:find the missing number 寻找缺失的数

题目 寻找缺失的数 给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数. 样例 N = 4 且序列为 [0, 1, 3] 时,缺失的数为2. 注意 可以改变序列中数的位置. 挑战 在数组上原地完成,使用O(1)的额外空间和O(N)的时间. 解题 重新定义一个数组存放排序后的数,空间复杂度和时间复杂度都是O(N) public class Solution { /** * @param nums: an array of integers * @retur

Missing number - 寻找缺失的那个数字

需求:给出一个int型数组,包含不重复的数字0, 1, 2, ..., n:找出缺失的数字: 如果输入是[0, 1, 2] 返回 3 输入数组 nums = [0, 1, 2, 4] :应该返回 3 输入nums = [2, 0] :应该返回 1 输入nums = [1, 0]:应该返回 2 方法1:先排序,再线性寻找 元素不一定按顺序排列: 先对数组进行排序,再按顺序寻找 import java.util.Arrays; public class Solution { public int m