POJ 1486 Sorting Slides(二分图完全匹配必须边)题解
题意:给你n张照片的范围,n个点的坐标,问你能唯一确定那几个点属于那几张照片,例如样例中4唯一属于A,2唯一属于C,1唯一属于B,3唯一属于C
思路:进行二分图完全匹配,怎么判断唯一属于?匹配完之后删掉某一条匹配边再跑一次二分图匹配,如果还能完全匹配,那么就不是唯一,反之唯一。
代码:
- #include<set>
- #include<map>
- #include<stack>
- #include<cmath>
- #include<queue>
- #include<vector>
- #include<string>
- #include<cstdio>
- #include<cstring>
- #include<sstream>
- #include<iostream>
- #include<algorithm>
- typedef long long ll;
- using namespace std;
- const int maxn = + ;
- const int MOD = 1e9 + ;
- const int INF = 0x3f3f3f3f;
- struct node{
- int x1, x2, y1, y2;
- }p[maxn];
- struct Node{
- int x, y;
- }a[maxn];
- struct Edge{
- int to, next;
- }edge[maxn * ];
- int g[maxn][maxn], linker[maxn], ans[maxn], n;
- bool used[maxn];
- bool dfs(int u){
- for(int v = ; v < * n; v++){
- if(g[u][v] && !used[v]){
- used[v] = true;
- if(linker[v]== - || dfs(linker[v])){
- linker[v] = u;
- return true;
- }
- }
- }
- return false;
- }
- int hungary(){
- int res = ;
- memset(linker, -, sizeof(linker));
- for(int u = ; u < * n; u++){
- memset(used, false, sizeof(used));
- if(dfs(u)) res++;
- }
- return res;
- }
- bool inside(node m, Node n){
- if(n.x > m.x1 && n.x < m.x2 && n.y > m.y1 && n.y < m.y2) return true;
- return false;
- }
- int main(){
- int ca = ;
- while(~scanf("%d", &n) && n){
- for(int i = ; i < n; i++){
- scanf("%d%d%d%d", &p[i].x1, &p[i].x2, &p[i].y1, &p[i].y2);
- }
- memset(g, , sizeof(g));
- for(int i = ; i < n; i++){
- scanf("%d%d", &a[i].x, &a[i].y);
- for(int j = ; j < n; j++){
- if(inside(p[j], a[i])){
- g[i][n + j] = g[n + j][i] = ;
- }
- }
- }
- printf("Heap %d\n", ca++);
- int ret = hungary();
- memcpy(ans, linker, sizeof(ans));
- if(ret != * n) printf("none\n");
- else{
- bool ok = false;
- for(int i = n; i < * n; i++){
- g[i][ans[i]] = g[ans[i]][i] = ;
- ret = hungary();
- if(ret == * n) continue;
- printf("%s(%c,%d)", ok == true? " " : "",'A' + (i - n), ans[i] + );
- ok = true;
- g[i][ans[i]] = g[ans[i]][i] = ;
- }
- if(!ok) printf("none\n");
- else printf("\n");
- }
- printf("\n");
- }
- return ;
- }
POJ 1486 Sorting Slides(二分图完全匹配必须边)题解的更多相关文章
- POJ 1486 Sorting Slides (二分图关键匹配边)
题意 给你n个幻灯片,每个幻灯片有个数字编号1~n,现在给每个幻灯片用A~Z进行编号,在该幻灯片范围内的数字都可能是该幻灯片的数字编号.问有多少个幻灯片的数字和字母确定的. 思路 确定幻灯片的数字就是 ...
- poj 1486 Sorting Slides(二分图匹配的查找应用)
Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...
- POJ 1486 Sorting Slides (KM)
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2831 Accepted: 1076 De ...
- poj 1486 Sorting Slides
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4469 Accepted: 1766 De ...
- POJ 1486 Sorting Slides(二分图匹配)
[题目链接] http://poj.org/problem?id=1486 [题目大意] 给出每张幻灯片的上下左右坐标,每张幻灯片的页码一定标在这张幻灯片上, 现在问你有没有办法唯一鉴别出一些幻灯片 ...
- POJ 1486 Sorting Slides【二分图匹配】
题目大意:有n张幻灯片和n个数字,幻灯片放置有重叠,每个数字隶属于一个幻灯片,现在问你能够确定多少数字一定属于某个幻灯片 思路:上次刷过二分图的必须点后这题思路就显然了 做一次二分匹配后将当前匹配的边 ...
- POJ 1486 Sorting Slides(寻找必须边)
题意:找出幻灯片与编号唯一对应的情况 思路: 1:求最大匹配,若小于n,则答案为none,否则转2 (不过我代码没有事先判断一开始的最大匹配数是否<n,但这样也过了,估计给的数据最大匹配数一定为 ...
- 【POJ】1486:Sorting Slides【二分图关键边判定】
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5390 Accepted: 2095 De ...
- poj 1486 纸张与数字匹配(二分图+割边处理)
题目来源:http://poj.org/problem?id=1486 题意: 算出所有独一无二的字母与数字的组合,使二分图完全匹配 我以为所有点都要独一无二匹配时输出匹配方法 题解: 先得到一个完全 ...
随机推荐
- Python - 5.Exception Handling
From:http://interactivepython.org/courselib/static/pythonds/Introduction/ExceptionHandling.html Exce ...
- 【Hive学习之六】Hive Lateral View &视图&索引
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...
- python seek()方法报错:“io.UnsupportedOperation: can't do nonzero cur-relative seeks”
今天使用seek()时报错了, 看下图 然后就百度了一下,找到了解决方法 这篇博客https://www.cnblogs.com/xisheng/p/7636736.html 帮忙解决了问题, 照理说 ...
- localstorage跨域解决方案
localstorage也存在 跨域的问题, [解决思路如下] 在A域和B域下引入C域,所有的读写都由C域来完成,本地数据存在C域下; 因此 A哉和B域的页面必定要引入C域的页面; 当然C域最好是主域 ...
- [转载] mysql 索引中的USING BTREE 的意义
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总 ...
- [转载]WeeksInAYear、WeeksInYear、DaysInAYear、DaysInAMonth、DaysInYear、DaysInMonth - 获取指定年月的周、日数
DateUtils.DaysInYear(); DateUtils.DaysInMonth(); DateUtils.DaysInAYear(); DateUtils.DaysInAMonth(); ...
- 大数据学习路线:Hadoop集群同步技术分享
今天给大家带来的技术分享是——Hadoop集群同步. 一.同步方式 选择一个机器,作为时间服务器(这里选择hadoop01),所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间. ...
- 前端框架VUE----补充
修饰符 .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 .你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: <!-- ...
- oj练习---dp专题
1.POJ 3744 Scout YYF I 经典的dp模型,但是要用到快速矩阵幂加速,分段的思想 # include <stdio.h> # include <algorithm& ...
- Linux centos7 下 svn 服务器搭建
摘自:https://www.cnblogs.com/mymelon/p/5483215.html 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在 ...