https://vjudge.net/problem/UVA-11134

题意:在n*n的棋盘上放n个车,使得任意两个车不相互攻击,且第i个车在一个给定的矩形Ri之内。用4个整数xli,yli,xri,yri来描述第i个矩形。

思路:行和列是不影响的,也就是说第i个棋子放在第几行不会影响它的列数。这样的话我们就可以分别处理行和列。由于棋子被给定了范围,这样的话我们可以用贪心法来解决,按照ri右坐标从小到大排序,然后从左坐标开始选出最小的且未被占据的坐标。

 #include<iostream>
#include<algorithm>
#include<cstring>
using namespace std; const int maxn = ; int n;
int ok; int vis_row[maxn];
int vis_col[maxn]; int ans_row[maxn];
int ans_col[maxn]; struct node
{
int l, r;
int id;
}x[maxn],y[maxn]; bool cmp(node a, node b)
{
return a.r < b.r || (a.r == b.r && a.l < b.l);
} void solve()
{
memset(vis_row, , sizeof(vis_row));
memset(vis_col, , sizeof(vis_col));
//处理行
for (int i = ; i < n; i++)
{
ok = ;
int num = x[i].id;
for (int j = x[i].l; j <= x[i].r; j++)
{
if (!vis_row[j])
{
ans_row[num] = j;
vis_row[j] = ;
ok = ;
break;
}
}
if (!ok) return;
} //处理列
for (int i = ; i < n; i++)
{
ok = ;
int num = y[i].id;
for (int j = y[i].l; j <= y[i].r; j++)
{
if (!vis_col[j])
{
ans_col[num] = j;
vis_col[j] = ;
ok = ;
break;
}
}
if (!ok) return;
}
} int main()
{ while (cin >> n && n)
{
for (int i = ; i < n; i++)
{
cin >> x[i].l >> y[i].l >> x[i].r >> y[i].r;
x[i].id = i;
y[i].id = i;
}
sort(x, x + n, cmp);
sort(y, y + n, cmp);
solve();
if (ok)
{
for (int i = ; i < n; i++)
{
cout << ans_row[i] << " " << ans_col[i] << endl;
}
}
else cout << "IMPOSSIBLE" << endl;
} return ;
}

UVa 11134 传说中的车的更多相关文章

  1. 01_传说中的车(Fabled Rooks UVa 11134 贪心问题)

    问题来源:刘汝佳<算法竞赛入门经典--训练指南> P81: 问题描述:你的任务是在n*n(1<=n<=5000)的棋盘上放n辆车,使得任意两辆车不相互攻击,且第i辆车在一个给定 ...

  2. UVA - 11134 Fabled Rooks[贪心 问题分解]

    UVA - 11134 Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n × n board subject to t ...

  3. uva 11134 - Fabled Rooks(问题转换+优先队列)

    题目链接:uva 11134 - Fabled Rooks 题目大意:给出n,表示要在n*n的矩阵上放置n个车,并且保证第i辆车在第i个区间上,每个区间给出左上角和右小角的坐标.另要求任意两个车之间不 ...

  4. UVA 11134 Fabled Rooks 贪心

    题目链接:UVA - 11134 题意描述:在一个n*n(1<=n<=5000)的棋盘上放置n个车,每个车都只能在给定的一个矩形里放置,使其n个车两两不在同一行和同一列,判断并给出解决方案 ...

  5. UVA - 11134 Fabled Rooks(传说中的车)(贪心)

    题意:在n*n的棋盘上放n个车,使得任意两个车不相互攻击,且第i个车在一个给定的矩形Ri之内,不相互攻击是指不同行不同列,无解输出IMPOSSIBLE,否则分别输出第1,2,……,n个车的坐标. 分析 ...

  6. UVA 11134 FabledRooks 传说中的车 (问题分解)

    摘要:贪心,问题分解. 因为行列无关,所以这个二维问题可以分解成两个一维问题. 优先队列实现:类似区间点覆盖的问题,先按照左端点排序,相同然后在按右端点排序(灵活性小的优先选).最优的选法,当然是要使 ...

  7. UVa 11134 - Fabled Rooks 优先队列,贪心 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  8. UVa 11134 (区间上的贪心) Fabled Rooks

    这道题真是WA得我心力交瘁,好讨厌的感觉啊! 简直木有写题解的心情了 题意: n×n的棋盘里,放置n个车,使得任意两车不同行且不同列,且第i个车必须放在给定的第i个矩形范围内.输出一种方案,即每个车的 ...

  9. UVA 11134 - Fabled Rooks(贪心+优先队列)

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

随机推荐

  1. [py]flask实现用户cmdb

    人最难做到的就是跟自己学习, 总是学习别人的, 沉淀, 过一段时间忘了刚学到的, 在向别人学习, 而非看看自己的沉淀, 殊不知, 世界上最亲近,最默契的人是自己. 用户cmdb功能概述 之前学flas ...

  2. [LeetCode] 561. Array Partition I_Easy tag: Sort

    Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1 ...

  3. 1.keras实现-->自己训练卷积模型实现猫狗二分类(CNN)

    原数据集:包含 25000张猫狗图像,两个类别各有12500 新数据集:猫.狗 (照片大小不一样) 训练集:各1000个样本 验证集:各500个样本 测试集:各500个样本 1= 狗,0= 猫 # 将 ...

  4. HTTP请求返回状态码详解

    当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...

  5. php mysql_connect pmysql_connect区别

    <?php        mysql_pconnect('192.168.75.128', 'root', 'root');        mysql_close();        sleep ...

  6. wordpress 修改域名后的403

    wordpress的好处就是方便,不好呢,额,反正就是有. 最近,修改域名,也遇到了这个问题[修改域名后,出现403]. 网上的办法似乎有很多,但有一些并不好,比如修改数据库什么的,如果是新手,数据库 ...

  7. yii2之创建管理员

    第一步,使用迁移文件建表admin 先建立数据迁移文件: 小贴士,如果发现自己改错了,需要重新修改迁移文件 第二步,使用gii工具创建model 创建一个新的model,继承AdminAR,方便以后管 ...

  8. lnmp之nginx1.10.2安装

    linux下nginx的安装 为了后面避免缺失,还是什么都安装一下(后面安装php和mysql就不需要重复再执行下面这个了,当然你再执行一遍也没问题) [root@localhost src]# yu ...

  9. uva12083 二分图 求最大独立集 转化为求最大匹配 由题意推出二分图

    这题大白书例题 : Frank 是一个思想有些保守的高中老师,有一次,他需要带一些学生出去旅行,但又怕其中一些学生在旅途中萌生爱意.为了降低这种事情的发生概率,他决定确保带出去的任意两个学生至少要满足 ...

  10. 定位性能问题的18个linux命令

    1.TopTop命令是一个性能监控程序,它按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果.这条命令显示了CPU的使用率.内存使用率.交换内存使用大小.高速缓存使用大小. ...