UVA-11134 Fabled Rooks 贪心问题(区间贪心)
题目链接:https://cn.vjudge.net/problem/UVA-11134
题意
在 n*n 的棋盘上,放上 n 个车(ju)。使得这 n 个车互相不攻击,即任意两个车不在同一行、同一列。同时这 n 个车必须落在一个规定的矩形区域。
若无解,输出 "IMPOSSIABLE";有解则按下标输出坐标。
思路
首先可以想到行与列互不影响,于是可以分别求解。
很容易想到区间贪心模型。
于是在第一次写这道题的时候,简单的把区间左端点按从小到大的顺序排列,若相同则把右端点从小到大排列。最后从左到右查找一边。
(思路是别人没有,而我独有的先处理。)
结果WA了=_=
意识到 (1, 1) (2, 2) (1, 3) 这样的情况不可行后,考虑到了第二种思路:
A仅有的先处理(A的可选项少所以先处理),B独有的其次处理。
即:我仅有的先处理,我独有的后处理。
有比较代码:
bool operator < (const Interval &a) const{
return (r<a.r)||(r==a.r && l<a.l);
}
于是AC
代码
#include <cstdio>
#include <algorithm>
using namespace std;
struct Interval{
int l, r, idx;
bool operator < (const Interval &a) const{
return (r<a.r)||(r==a.r && l<a.l);
}
}x[5005],y[5005];
int n;
int func(Interval x[], int ans[]){
int vis[5005]={0};
sort(x, x+n);
for (int i=0; i<n; i++){
int isok=1;
for (int ptr=x[i].l; ptr<=x[i].r; ptr++){
if (vis[ptr]) continue;
vis[ptr]=1;ans[x[i].idx]=ptr;
isok=0; break;
}
if (isok) return 1;
}
return 0;
}
int main(void){
int ans[2][5005];
while (scanf("%d", &n)==1 && 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].idx=y[i].idx=i;
}
if (func(x, ans[0]) || func(y, ans[1])){printf("IMPOSSIBLE\n"); continue;}
for (int i=0; i<n; i++)
printf("%d %d\n", ans[0][i], ans[1][i]);
}
return 0;
}
Time | Memory | Length | Lang | Submitted |
---|---|---|---|---|
None | 862 | C++ 5.3.0 | 2017-10-25 13:41:10 |
UVA-11134 Fabled Rooks 贪心问题(区间贪心)的更多相关文章
- UVA - 11134 Fabled Rooks问题分解,贪心
题目:点击打开题目链接 思路:为了满足所有的车不能相互攻击,就要保证所有的车不同行不同列,于是可以发现,行与列是无关的,因此题目可以拆解为两个一维问题,即在区间[1-n]之间选择n个不同的整数,使得第 ...
- 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 ...
- uva 11134 - Fabled Rooks(问题转换+优先队列)
题目链接:uva 11134 - Fabled Rooks 题目大意:给出n,表示要在n*n的矩阵上放置n个车,并且保证第i辆车在第i个区间上,每个区间给出左上角和右小角的坐标.另要求任意两个车之间不 ...
- UVA 11134 Fabled Rooks 贪心
题目链接:UVA - 11134 题意描述:在一个n*n(1<=n<=5000)的棋盘上放置n个车,每个车都只能在给定的一个矩形里放置,使其n个车两两不在同一行和同一列,判断并给出解决方案 ...
- uva 11134 fabled rooks (贪心)——yhx
We would like to place n rooks, 1 n 5000, on a n nboard subject to the following restrictions• The i ...
- UVA 11134 - Fabled Rooks(贪心+优先队列)
We would like to place n rooks, 1 ≤ n ≤ 5000, on a n×n board subject to the following restrict ...
- UVa 11134 - Fabled Rooks 优先队列,贪心 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- UVa 11134 Fabled Rooks(贪心)
题目链接 题意 在n*n的棋盘上的n个指定区间上各放1个'车’ , 使他们相互不攻击(不在同行或同列),输出一种可能的方法. 分析 每行每列都必须放车,把行列分开看,若行和列同时有解,则问题有解. ...
- UVA 11134 Fabled Rooks(贪心的妙用+memset误用警示)
题目链接: https://cn.vjudge.net/problem/UVA-11134 /* 问题 输入棋盘的规模和车的数量n(1=<n<=5000),接着输入n辆车的所能在的矩阵的范 ...
- UVa 11134 Fabled Rooks (贪心+问题分解)
题意:在一个n*n的棋盘上放n个车,让它们不互相攻击,并且第i辆车在给定的小矩形内. 析:说实话,一看这个题真是没思路,后来看了分析,原来这个列和行是没有任何关系的,我们可以分开看, 把它变成两个一维 ...
随机推荐
- sqlserver如何给某一用户分配只能查看某一视图的权限
exec sp_addrole 'guestview' --GRANT SELECT ON veiw TO [guestview]; GRANT SELECT ON CustomerInfo TO ...
- 【原创】使用Kettle的一些心得和经验
用kettle做etl也有段时间了,遇到很多问题,总结了一下. [关于版本的问题] kettle常用的版本有4.1和4.4,对于4.1版本: 1.该版本的兼容性有点差,在某些机器上运行会启动失败,或者 ...
- 读 Real-Time Rendering 收获 - chapter 4. transform
chapter 4. Transform p54 affine transform p57 all rotation matrices have a determinant of one and ar ...
- 给DOM操作生成的元素添加事件
问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...
- 理解ZBrush中的透明度
Alpha(透明度)是ZBrush 4R8实际工作中使用频率很高的一个控制模块,它主要用于细化模型纹理及贴图绘制,该工具提供了丰富的笔触形状,使用这些笔触形状可以绘制出各种各样的效果,如下图所示. 这 ...
- Dapper基础知识一
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. 1,什么是Dapper? Dapper,.NET下的一种ORM ...
- BZOJ 4453 cys就是要拿英魂!(后缀数组+单调栈+平衡树)
一开始的时候感觉就是一个主席树裸题. 然后发现自己错了. 首先建出后缀数组. 设\(i<j\) 如果\(rk[i]>rk[j]\)显然i更优. 如果\(rk[i]<rk[j]\)不一 ...
- 学习《数据科学入门》中文PDF+英文PDF+源代码
数据科学是一个蓬勃发展.前途无限的行业,有人将数据科学家称为"21世纪头号性感职业".本书从零开始讲解数据科学工作,教授数据科学工作所必需的黑客技能,并带领读者熟悉数据科学的核心知 ...
- 越努力越幸运--2-LD_PRELOAD, fork ,僵尸进程
开始新的工作了,做了爸爸之后感觉一直都是浑浑噩噩,希望老婆和宝宝一直健康开心~ 最近遇到的问题很多啊,哈哈 1. 装环境时候,需要的glibc 版本不对,我把本地的软链接改了个别名(惯性思维),然后一 ...
- tree 核心命令参数
常用参数: -a 显示所有文件 包括隐藏文件 -d 只显示目录 -f 显示每个文件的全路径 -i 不显示树枝 常与-f一起搭配 -L 显示的层数 -F 区分哪个文件是目录 [root@ftp:/va ...