题意:
一个n*n的矩阵上放n个车,第i辆车在第i个区间上,每个区间给出左上角和右下角的坐标。任意两个车之间同行同列不能互相攻击,求这些车放置
的坐标。
思路:
第一眼看以为是N皇后的变形,后来发现车子斜上角不会相互攻击。则行列不会相互影响,即该问题可分别分解求行,求列的位置的问题,和上一题uva1422的做法一样,按左区间排序后通过优先级队列按右区间的优先级来做。
代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;const int N = 5005;
int n;
struct node {int l, r, id;friend bool operator < (node a, node b) {return a.r > b.r;}
}x[N],y[N],ans[N];
int cmp(node a, node b) {return a.l < b.l;
}int solve() {priority_queue<node> Q;int cur = 0;for (int i = 1; i <= n; i++)    {while (cur < n && x[cur].l <= i)Q.push(x[cur++]);if (Q.empty())return false;node front = Q.top();Q.pop();if (front.r < i)return false;ans[front.id].l = i;}cur = 0;for (int i = 1; i <= n; i++)    {while (cur < n && y[cur].l <= i)Q.push(y[cur++]);if (Q.empty())return false; node front = Q.top();Q.pop();if (front.r < i)return false;ans[front.id].r = i;}for (int i = 0; i < n; i++)printf("%d %d\n", ans[i].l, ans[i].r);return true;
}
int main() {while (scanf("%d", &n) && n) {for (int i = 0; i < n; i++) {scanf("%d%d%d%d", &x[i].l, &y[i].l, &x[i].r, &y[i].r);x[i].id = y[i].id = i;}sort(x, x + n, cmp);sort(y, y + n, cmp);if (!solve())printf("IMPOSSIBLE\n");}return 0;
}

uva11134 -Fabled Rooks相关推荐

  1. 解题报告 之 UVA11134 Fabled Rooks

    解题报告 之 UVA11134 Fabled Rooks Description Problem F: Fabled Rooks We would like to place n rooks, 1 ≤ ...

  2. UVa11134 - Fabled Rooks(贪心)

    11134 - Fabled Rooks We would like to place nn rooks, 1≤n≤50001 ≤ n ≤ 5000, on a n×nn × n board subj ...

  3. UVa11134 Fabled Rooks(贪心算法)

    问题:在n*n的棋盘中,放置n个车,要求对应的车在规定的矩形区间范围内,并且n个车不在同一行或者列上. 思路: 从x,y方向上分别确认n个车的位置,以x方向为例.根据区间的右端从小到大排列.然后在对车 ...

  4. UVA11134 Fabled Rooks

    摘要: 贪心 链接 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  5. 11134 - Fabled Rooks

    Fabled Rooks We would like to place nn rooks, 1≤n≤50001 \le n \le 5000, on a n×nn \times n board sub ...

  6. 8-4 Fabled Rooks uva11134

    题意:你的任务是在n*n的棋盘上放 n 小于5000 个车 使得任意两个车不互相攻击 且第i个车在一个给定的矩形ri之内  给出该矩形左上角坐标和右下角坐标四个点  必须满足放车的位置在矩形内  边上 ...

  7. UVA11134 传说中的车 Fabled Rooks

    首先,根据数据范围,可以得到这是一题O(N2) 考虑贪心 发现行和列是不相关的,于是可以把他们分成两个一维区间问题,也就是在线段中选出点使得每个线段中都有一个点,求出方案. 先考虑尽量不对后面造成影响 ...

  8. uva 11134 Fabled Rooks

    原题: We would like to place n rooks, 1 ≤ n ≤ 5000, on a n × n board subject to the following restrict ...

  9. UVA 11134 - Fabled Rooks(经典贪心)

    题目链接 https://cn.vjudge.net/problem/UVA-11134 [题意] 你的任务是在n×n的棋盘上放置n辆车,使得任意两辆车不互相攻击,且第i辆车在一个给定的矩形Ri以内. ...

最新文章

  1. 参加UI培训后可以找什么工作
  2. 第3周 实践项目2 建设”顺序表“算法库(可参考为模板)
  3. 力扣长度最小的子数组
  4. 存储池与存储卷,使用virt-install创建虚拟机
  5. LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)
  6. 求有向图中两点最短距离java_Java 迪杰斯特拉算法实现查找最短距离
  7. 求一个序列中,第k个数
  8. 数据库(SQL)学习——基础篇一:初识数据库
  9. javascript 学习指南--语法
  10. 基于Android图书馆借阅系统app毕业设计
  11. ubuntu16.04 禁用Guest用户
  12. 暗刺,高并发五个利器
  13. 当华为云WeLink遇上P40,多屏协同全场景办公有多神奇?
  14. 如何成为一个iOS开发者
  15. 移远BC20模组使用LwM2M协议接入华为IoT平台(NB-IoT专栏—进阶篇2)
  16. tplink显示网络连接已断开_TP-link无线路由器无法上网排查方案及解决办法(图文教程)...
  17. 火绒能更新服务器系统么,火绒自动升级频率是怎么样的?
  18. 弘辽科技:淘宝启动中小型商家普惠计划
  19. Flash CS5 XFL文件格式解读
  20. 工厂车间设备智能化管理系统软件

热门文章

  1. 手把手带你领略graphql的魅力
  2. JS将数字金额转换为大写人民币汉字
  3. Android webview和HTML的JS交互
  4. iMazing苹果电脑版怎么下载?mac苹果手机备份软件
  5. 升级ESX SERVER
  6. [4G5G专题-109]:部署 - LTE RF射频优化的流程、原因综合分析、解决办法大全
  7. 【python】计算miou
  8. linux权限管理详解
  9. MySQL 用户管理 - 添加用户、授权、删除用户
  10. 【安卓USB开发】让手机与物联网设备鹊桥相会