uva11134 -Fabled Rooks
来源:互联网 发布:手机怎么申请淘宝直播 编辑:程序博客网 时间:2024/05/22 08:03
题意:
一个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;}
0 0
- UVA11134- Fabled Rooks
- UVa11134 - Fabled Rooks(贪心)
- uva11134 -Fabled Rooks
- UVA11134 Fabled Rooks
- UVA11134 Fabled Rooks(贪心)
- UVA11134-Fabled Rooks(贪心)
- Uva11134 Fabled Rooks(贪心,优先级队列)
- 解题报告 之 UVA11134 Fabled Rooks
- uva11134 fabled rooks 贪心+问题独立分解
- 【高效算法设计——问题分解】Uva11134 Fabled Rooks
- Uva11134 Fabled Rooks【问题分解+贪心】【例题8-4】
- Fabled Rooks
- Fabled Rooks
- Fabled Rooks
- Fabled Rooks
- uva11134 Fabled Rocks 贪心
- uva 11134 Fabled Rooks
- Uva-11134-Fabled Rooks
- C++类模板
- php 调试防止超时
- Android_SDK_Windows免费下载链接
- 观影小结
- NEU 2016年2月月赛总结
- uva11134 -Fabled Rooks
- PCI总线学习(四)---> PCI写传输
- android必备技能-shape
- 分离adapter的getView
- 【C#基础】初相识——初步认识C#
- socket编程 -- 基于UDP协议的C/S通信模型及实现
- PCI总线学习(五)---> PCI中断
- JavaSript模块规范 - AMD规范与CMD规范介绍
- PCI总线学习(六)---> PCI配置传输