uva 11134

Posted 发牌员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva 11134相关的知识,希望对你有一定的参考价值。

给定区间求每个棋子的位置,横坐标和纵坐标分开,贪心找到各不相交的点,x,y组合就行了

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn=5000+10;
struct note
{
    int l,r;
    int id;
    bool operator < (const note &p) const
    {
        return (l>p.l)||(l==p.l&&r>p.r);
    }
}a[maxn],b[maxn];//横坐标是a,纵坐标是b
int aa[maxn][5];
int n;
int jude(note *c,int pos)
{
   priority_queue<note> qq;
   for(int i=0;i<n;i++)
        qq.push(c[i]);
   int ppos=0;//要呆的位置
   while(qq.size())
   {
       note cc=qq.top(); qq.pop();
       if(cc.r<ppos) return 0;
       if(cc.l<ppos)
       {
           cc.l=ppos;
           qq.push(cc);//更新区间,重新遍历
           continue;
       }
       aa[cc.id][pos]=cc.l;
       ppos=cc.l+1;
   }
   return 1;
}
int main()
{
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%d%d%d%d",&a[i].l,&b[i].l,&a[i].r,&b[i].r);
            a[i].id=i;
            b[i].id=i;
        }
        if(jude(a,0)&&jude(b,1))
        {
            for(int i=0;i<n;i++)
                printf("%d %d\n",aa[i][0],aa[i][1]);
        }
        else printf("IMPOSSIBLE\n");
    }
    return 0;
}

 

以上是关于uva 11134的主要内容,如果未能解决你的问题,请参考以下文章

UVA 11134 Fabled Rooks

Uva11134:Fabled Rooks

uva 11134

UVa 11134 传说中的车

Fabled Rooks UVA - 11134

UVa 11134 - Fabled Rooks