Sorting Slides
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 2831   Accepted: 1076

Description

Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he is not a very tidy person and has put all his transparencies on one big heap. Before giving the talk, he has to sort the slides. Being a kind of minimalist, he wants to do this with the minimum amount of work possible.

The situation is like this. The slides all have numbers written on them according to their order in the talk. Since the slides lie on each other and are transparent, one cannot see on which slide each number is written. 

Well, one cannot see on which slide a number is written, but one may deduce which numbers are written on which slides. If we label the slides which characters A, B, C, ... as in the figure above, it is obvious that D has number 3, B has number 1, C number 2 and A number 4.

Your task, should you choose to accept it, is to write a program that automates this process.

Input

The input consists of several heap descriptions. Each heap descriptions starts with a line containing a single integer n, the number of slides in the heap. The following n lines contain four integers xmin, xmax, ymin and ymax, each, the bounding coordinates of the slides. The slides will be labeled as A, B, C, ... in the order of the input.

This is followed by n lines containing two integers each, the x- and y-coordinates of the n numbers printed on the slides. The first coordinate pair will be for number 1, the next pair for 2, etc. No number will lie on a slide boundary.

The input is terminated by a heap description starting with n = 0, which should not be processed.

Output

For each heap description in the input first output its number. Then print a series of all the slides whose numbers can be uniquely determined from the input. Order the pairs by their letter identifier.

If no matchings can be determined from the input, just print the word none on a line by itself.

Output a blank line after each test case.

Sample Input

4
6 22 10 20
4 18 6 16
8 20 2 18
10 24 4 8
9 15
19 17
11 7
21 11
2
0 2 0 2
0 2 0 2
1 1
1 1
0

Sample Output

Heap 1
(A,4) (B,1) (C,2) (D,3) Heap 2
none

Source

大致题意:
    如图,给出n个方块左上角的坐标和右下角的坐标,再给出4个数字的坐标。已知每个数字唯一的属于一个方块,求出哪些数字和方块的对应关系是必须确定的。

 
大致思路: 
    首先按照数字和方块的对应关系建立二分图(比如上图中1对应ABC,2对应AC,3对应BCD,4对应A),然后依次试着删去这些关系,再求最大匹配。如果匹配数少于n则说明这个关系必须存在。
 
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; const int N=; int n,map[N][N],x[N][],y[N][],num[N][];
int linker[N],vis[N]; int DFS(int u){
int v;
for(v=;v<=n;v++)
if(map[u][v] && !vis[v]){
vis[v]=;
if(linker[v]==- || DFS(linker[v])){
linker[v]=u;
return ;
}
}
return ;
} int Hungary(){
int u,ans=;
memset(linker,-,sizeof(linker));
for(u=;u<=n;u++){
memset(vis,,sizeof(vis));
if(DFS(u))
ans++;
}
return ans;
} int main(){ //freopen("input.txt","r",stdin); int cases=;
while(~scanf("%d",&n) && n){
memset(map,,sizeof(map));
for(int i=;i<=n;i++)
scanf("%d%d%d%d",&x[i][],&x[i][],&y[i][],&y[i][]);
for(int i=;i<=n;i++)
scanf("%d%d",&num[i][],&num[i][]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(num[i][]>=x[j][] && num[i][]<=x[j][] && num[i][]>=y[j][] && num[i][]<=y[j][])
map[i][j]=;
printf("Heap %d\n",++cases);
int flag=;
for(int j=;j<=n;j++)
for(int i=;i<=n;i++){
if(map[i][j]==)
continue;
map[i][j]=;
if(Hungary()<n){
flag=;
char ch='A'+(j-);
printf("(%c,%d) ",ch,i);
}
map[i][j]=;
}
if(!flag)
printf("none\n\n");
else
printf("\n\n");
}
return ;
}

POJ 1486 Sorting Slides (KM)的更多相关文章

  1. POJ 1486 Sorting Slides(二分图匹配)

    [题目链接] http://poj.org/problem?id=1486 [题目大意] 给出每张幻灯片的上下左右坐标,每张幻灯片的页码一定标在这张幻灯片上, 现在问你有没有办法唯一鉴别出一些幻灯片 ...

  2. POJ 1486 Sorting Slides(二分图完全匹配必须边)题解

    题意:给你n张照片的范围,n个点的坐标,问你能唯一确定那几个点属于那几张照片,例如样例中4唯一属于A,2唯一属于C,1唯一属于B,3唯一属于C 思路:进行二分图完全匹配,怎么判断唯一属于?匹配完之后删 ...

  3. poj 1486 Sorting Slides

    Sorting Slides Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4469   Accepted: 1766 De ...

  4. POJ 2400 Supervisor, Supervisee(KM)

    題目鏈接 題意 :N个部门和N个员工,每个部门要雇佣一个工人,部门对每个工人打分,从1~N,1表示很想要,N表示特别不想要,每个工人对部门打分,从1~N.1表示很想去这个部门,N表示特别不想去这个部门 ...

  5. poj 1486 Sorting Slides(二分图匹配的查找应用)

    Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...

  6. POJ 1486 Sorting Slides(寻找必须边)

    题意:找出幻灯片与编号唯一对应的情况 思路: 1:求最大匹配,若小于n,则答案为none,否则转2 (不过我代码没有事先判断一开始的最大匹配数是否<n,但这样也过了,估计给的数据最大匹配数一定为 ...

  7. POJ 1486 Sorting Slides (二分图关键匹配边)

    题意 给你n个幻灯片,每个幻灯片有个数字编号1~n,现在给每个幻灯片用A~Z进行编号,在该幻灯片范围内的数字都可能是该幻灯片的数字编号.问有多少个幻灯片的数字和字母确定的. 思路 确定幻灯片的数字就是 ...

  8. POJ 1486 Sorting Slides【二分图匹配】

    题目大意:有n张幻灯片和n个数字,幻灯片放置有重叠,每个数字隶属于一个幻灯片,现在问你能够确定多少数字一定属于某个幻灯片 思路:上次刷过二分图的必须点后这题思路就显然了 做一次二分匹配后将当前匹配的边 ...

  9. UVA663 Sorting Slides(烦人的幻灯片)

    UVA663 Sorting Slides(烦人的幻灯片) 第一次做到这么玄学的题,在<信息学奥赛一本通>拓扑排序一章找到这个习题(却发现标程都是错的),结果用二分图匹配做了出来 蒟蒻感觉 ...

随机推荐

  1. webkit-user-select:none 问题

    webkit-user-select:none 问题 学习了:https://bugs.webkit.org/show_bug.cgi?id=82692 最近两天做移动端游戏举报页面.遇到一个问题,移 ...

  2. Giraph源代码分析(九)—— Aggregators 原理解析

    HamaWhite 原创.转载请注明出处!欢迎大家增加Giraph 技术交流群: 228591158 Giraph中Aggregator的基本使用方法请參考官方文档:http://giraph.apa ...

  3. OPENGL: WHY IS YOUR CODE PRODUCING A BLACK WINDOW?

      Introduction One of the most common problems for novice, and sometimes experienced, OpenGL program ...

  4. [React] Use React.ReactNode for the children prop in React TypeScript components and Render Props

    Because @types/react has to expose all its internal types, there can be a lot of confusion over how ...

  5. iOS 设置 UIWebView UserAgent

    NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:@"naviga ...

  6. 【Zookeeper】源码分析之Watcher机制(二)之WatchManager

    一.前言 前面已经分析了Watcher机制中的第一部分,即在org.apache.zookeeper下的相关类,接着来分析org.apache.zookeeper.server下的WatchManag ...

  7. Response的返回内容类型

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6682514.html  服务器在返回结果给浏览器时,通常需要先设置响应头的contentType属性.那么,c ...

  8. cocos2d-js 自定义事件监听派发

    熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法. cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManag ...

  9. 〖Linux〗安装和使用virtualenv,方便多个Python版本中切换

    1. 安装pip easy_install pip 2. 安装virtualenvwrapper sudo pip install virtualenvwrapper 3. 使用virtualenv ...

  10. VREP中的力触觉设备接口(CHAI3D)

    力反馈技术是一种新型的人机交互技术,它允许用户借助力反馈设备触碰.操纵计算机生成的虚拟环境中的物体,并感知物体的运动和相应的力反馈信息,实现人机力觉交互.虽然传统的鼠标.键盘.触摸屏等交互手段可以满足 ...