题目大意:给出n行n列的表,输入4个数字代表点的范围,范围是一个矩形,前俩个数字代表矩形左上角坐标,后俩个数字代表右下角坐标,要求取的点所在行和所在列与其他点不相交
解题思路:因为行和列不冲突,所以将每个点分为行和列单独讨论,将得到的每个点范围按最大值从小到达排列,然后贪心处理

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node {int num, a, b; //a, b为x范围或者y范围,num是编号
};
bool cmp(node p, node q) {return p.b < q.b;
}
int n;
int rex[6000], rey[6000];
node nodex[6000];
node nodey[6000];
int sol() {for(int i = 1; i <= n; i++) {int k = 0;int j;for(j = 0; j <n ;j++) {int numb = nodex[j].num;if(rex[numb])continue;if(nodex[j].a <= i && nodex[j].b >= i) {rex[numb] = i;k = 1;break;}}if(!k)return 0;k = 0;for(j = 0; j <n ;j++) {int numb = nodey[j].num;                                            if(rey[numb])                                                                   continue;                                                                               if(nodey[j].a <= i && nodey[j].b >= i) {rey[numb] = i;k = 1;break;}}if(!k)return 0;}return 1;
}
int main() {while(cin >> n && n) {memset(rex, 0, sizeof(rex));memset(rey, 0, sizeof(rey));for(int i = 0; i < n; i++) {cin >> nodex[i].a;cin >> nodey[i].a;cin >> nodex[i].b;cin >> nodey[i].b;nodex[i].num = i+1;nodey[i].num = i+1;}sort(nodex, nodex+n, cmp);sort(nodey, nodey+n, cmp);if(sol()) {for(int i = 1; i <= n; i++) {cout << rex[i] << " " << rey[i] << endl;}}else {cout << "IMPOSSIBLE" << endl;}}return 0;
}

UVA 11134 Fabled Rooks相关推荐

  1. uva 11134 Fabled Rooks

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

  2. uva 11134——Fabled Rooks

    题意:给定一个n*n的期棋盘放n个车,要求任意车之间不能相互攻击,并且每个车都在相应的方框内. 思路:贪心.因为没有对角线的条件约束,所以放的行号和列号没有影响.那么单独求出来行号和列号即可.对于每一 ...

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

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

  4. 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 ...

  5. UVA 11134 Fabled Rook 枚举 multiset加速

    题意说的是给出一个长度为n的国际象棋的棋盘,然后给出n个车的可以放置的范围,范围是一个矩形,用左上和右下两对数来描述,问是否存在方式使得每个车都放在他自己的范围里面且相互不冲突 这里x方向和y方向是不 ...

  6. 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 ...

  7. UVa11134 Fabled Rooks(贪心算法)

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

  8. 解题报告 之 UVA11134 Fabled Rooks

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

  9. Fabled Rooks UVA - 11134

    比较简单的一道题,关键在于抓住一点:可以对行以及队列进行分开处理,行列的处理彼此之间是没有影响的.每次都选出满足条件的右边界最小的点,如果满足要求就继续下一轮的递归求解,如果不满足要求返回false结 ...

最新文章

  1. 卧槽!新基建背景下,这些姿势架构师必须懂!
  2. Late Lunch Talk: Time to consider using PacBio’s long read sequencing in your research?
  3. 2019 年,19 种方法让自己成为更好的 Node.js 工程师
  4. Java LinkedList特有方法程序小解 使用LinkedList 模拟一个堆栈或者队列数据结构。...
  5. matlab imread_matlab经典图片生成与去水印
  6. c语言和java和汇编语言_C语言和汇编语言的区别是什么?
  7. Xcode给应用开启沙箱sandbox
  8. 2021年浏阳市五中高考成绩查询,浏阳市2021年“三考”增加考生万余名
  9. 破解无线网络密码(蹭网教程
  10. 用cJSON.h/cJSON.c写JSON
  11. 数学——每日一题6 1.13 利用定积分的定义求极限
  12. 新品上架免费推广,新品上架前的准备
  13. TesterHome android app 编写历程(三)
  14. 虚拟机(VMware Workstation Pro15)及系统(Windows10)安装
  15. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)
  16. 专业建站和个人建站如何选择?
  17. 【go编译和反编译概述】
  18. 构建银行人工智能用户画像和自动营销体系
  19. 2021年11月软考网络规划设计师上午真题及答案解析
  20. 微信视频上传服务器失败,用SDK接口方法UploadForeverVideo上传视频文件报40113(unsupported file type)错误...

热门文章

  1. 江苏省高等学校计算机等级考试操作题,江苏省高等学校计算机等级考试09春一级操作题汇总...
  2. OnWorks-免费Windows/Linux/MAC等系统云服务器
  3. 经验分享:《节奏大师》UI优化历程
  4. Ruby+Appium demo
  5. Python-ppt增加图片
  6. 996不如驴,为啥这些精英会下嫁?附995公司名单大全全
  7. vim tutorial 101 hacks(三)
  8. 2018清华计算机类专业录取分数线,2020清华大学录取分数线汇总(含2018-2019历年)...
  9. python---爬虫
  10. 计算机会计和传统手工会计的区别,简要比较手工会计和计算机数据处理方式的区别...