UVA 11134(p237)----Fabled Rooks
来源:互联网 发布:歌曲消除人声软件 编辑:程序博客网 时间:2024/05/16 08:03
#include<bits/stdc++.h>#define debuusing namespace std;const int maxn=5*1e3+50;struct point{ int l,r,id;};int n,v[maxn];point a[maxn],b[maxn];int ansx[maxn],ansy[maxn];int cmp(point a,point b){ if(a.r==b.r) return a.l<b.l; else return a.r<b.r;}int solve(){ sort(a,a+n,cmp); sort(b,b+n,cmp); memset(v,0,sizeof(v)); for(int i=0; i<n; i++) { int flag=0; for(int j=a[i].l; j<=a[i].r; j++) { if(!v[j]) { v[j]=1; ansx[a[i].id]=j; flag=1; break; } } if(!flag) return 0; } memset(v,0,sizeof(v)); for(int i=0; i<n; i++) { int flag=0; for(int j=b[i].l; j<=b[i].r; j++) { if(!v[j]) { v[j]=1; ansy[b[i].id]=j; flag=1; break; } } if(!flag) return 0; } return 1;}void output(){ for(int i=0; i<n; i++) printf("%d %d\n",ansx[i],ansy[i]);}int main(){#ifdef debug freopen("in.in","r",stdin);#endif // debug while(scanf("%d",&n)==1&&n) { for(int i=0; i<n; i++) { int x,y,c,d; scanf("%d%d%d%d",&x,&y,&c,&d); a[i].l=x;a[i].r=c;a[i].id=i; b[i].l=y;b[i].r=d;b[i].id=i; } if(solve()) output(); else printf("IMPOSSIBLE\n"); } return 0;}
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2075
题解:注意到行和列是无关的,行的位置并不会影响列。所以问题变为两个一维问题:在区间[1,n]内选择n个数,使得第i个数在区间[x1i,x2i]内(行,列同)。将每个区间按照右端点从小到大排序(对于选择的每个i,尽可能的不影响下一个区间选择(右端点最小)),在可行区间内,选择未选择的最小值即可。若按左端点,反例[1,1],[1,3],[2,2]。
0 0
- UVA 11134(p237)----Fabled Rooks
- uva 11134 Fabled Rooks
- Uva-11134-Fabled Rooks
- uva 11134 Fabled Rooks
- uva 11134 - Fabled Rooks
- UVA 11134 - Fabled Rooks
- UVa:11134 Fabled Rooks
- uva 11134 Fabled Rooks
- UVa 11134 - Fabled Rooks
- UVa 11134 Fabled Rooks
- UVA 11134 - Fabled Rooks
- Uva - 11134 - Fabled Rooks
- UVA - 11134 Fabled Rooks
- UVA 11134 Fabled Rooks
- UVA - 11134 Fabled Rooks
- UVA 11134 Fabled Rooks
- UVA 11134 Fabled Rooks
- UVA 11134Fabled Rooks
- NVIDIA Jetson TK1学习与开发(十):人脸检测(Face Detection)
- Android动画解析(二)—— Tween Animation(补间动画)
- Elasticsearch集群的备份与恢复
- 优先队列priority_queue基本操作
- Problem G: C语言习题 n个数逆序
- UVA 11134(p237)----Fabled Rooks
- 顺序栈,两栈共享空间,链栈
- Java-如何去掉JFrame上的最大化最小化和关闭按钮
- Jvm内存分配分析,Java OutOfMemoryError原因分析
- 多线程
- Problem H: 2.4.5 Fractions to Decimals 分数化小数
- SYBASE ASE 事务日志(transaction log)管理
- 安卓小频幕播放视频
- 支付清算系统简介(1)