例题8-4 传说中的车 UVa 11134
来源:互联网 发布:新闻源排名优化 编辑:程序博客网 时间:2024/06/06 12:50
分析:行和列无关,分别在行列中排列1-n,要求是第I个整数在[a1,a2]区间里。所以优先按照右边界排列,其次是左边界,这样的话,再依次给每一行或每一列安排位置。
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;struct point{ int pos,a1,a2,ans;//顺序,左边界,右边界,排列后的位置};point x[5005],y[5005];bool vis[5005];bool cmp(point p1,point p2){ if(p1.a2==p2.a2)return p1.a1<p2.a1; return p1.a2<p2.a2;}bool cmp2(point p1,point p2){ return p1.pos<p2.pos;}int main(){ int n,x1,x2,y1,y2; while(scanf("%d",&n)&&n){ for(int i=0;i<n;i++){ scanf("%d%d%d%d",&x1,&y1,&x2,&y2); x[i].a1=x1; x[i].a2=x2; x[i].pos=i; y[i].a1=y1; y[i].a2=y2; y[i].pos=i; } sort(x,x+n,cmp); sort(y,y+n,cmp); memset(vis,0,sizeof(vis)); bool v=false; for(int i=0;i<n;i++){ bool flag=false; for(int j=x[i].a1;j<=x[i].a2;j++){ if(!vis[j]){ x[i].ans=j; vis[j]=true; flag=true; break; } } if(!flag){ v=true; break; } } if(v){ printf("IMPOSSIBLE\n"); continue; } memset(vis,0,sizeof(vis)); v=false; for(int i=0;i<n;i++){ bool flag=false; for(int j=y[i].a1;j<=y[i].a2;j++){ if(!vis[j]){ y[i].ans=j; vis[j]=true; flag=true; break; } } if(!flag){ v=true; break; } } if(v){ printf("IMPOSSIBLE\n"); continue; } sort(x,x+n,cmp2); sort(y,y+n,cmp2); for(int i=0;i<n;i++){ printf("%d %d\n",x[i].ans,y[i].ans); } }}
0 0
- 例题8-4 传说中的车 UVa 11134
- 例题8-4 传说中的车(Fabled Rooks, UVa 11134)
- 例题8-4 传说中的车 UVa11134
- UVa 11132 例题8-4 传说中的车(Fabled Rooks)
- 例题8-4:传说中的车(问题分解)
- UVA - 11134 - 传说中的车
- 传说中的车 uva 11134
- 传说中的车(Fabled Rooks,UVa 11134)
- uva 11134 传说中的车 从简单情形入手
- Uva 11134 传说中的车 贪心的思维
- [UVa 11134] 传说中的车(Fabled Rooks)
- UVa #11134 Fabled Rooks (例题8-4)
- UVa 传说中的车(白书P11134_放棋子+set)
- 例题8-1 UVA
- 传说中的车 UVa11134
- 传说中的车uva11134
- 紫书动规 例题9-8 UVA
- 紫书动规 例题9-4 UVA
- android UI界面设计(2)
- 菜鸟开发之路 --- Gson解析
- 动画效果实现
- Ubuntu15.04安装Android开发环境
- 如何换出隐藏的星际译王
- 例题8-4 传说中的车 UVa 11134
- leetcode笔记:Sudoku Solver
- 黑马程序员——OC语言加强---@property参数
- 如何制作U盘启动
- Quartz 2D学习笔记--Image篇
- Ubuntu14.10 编译 Android5.0 源码
- 思维导图实现——栈的两种存储方式优缺点
- 语句-For循环嵌套
- 呦呦鹿鸣,食野之蒿。【诗经早就预言了屠呦呦的重大发现