第四十三题 UVA11134 传说中的车 Fabled Rooks

2023-11-22 20:20

本文主要是介绍第四十三题 UVA11134 传说中的车 Fabled Rooks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
输入格式
在这里插入图片描述

输出格式
在这里插入图片描述

题意翻译
在一个n*n(1<=n<=5000)的棋盘上放置n个车,每个车都只能在给定的一个矩形(xli,xri,yli,yri)里放置,使其n个车两两不在同一行和同一列,判断并给出解决方案。

感谢@zhbayl000 提供的翻译

输入输出样例
输入 #1复制
8
1 1 2 2
5 7 8 8
2 2 5 5
2 2 5 5
6 3 8 6
6 3 8 5
6 3 8 8
3 6 7 8
8
1 1 2 2
5 7 8 8
2 2 5 5
2 2 5 5
6 3 8 6
6 3 8 5
6 3 8 8
3 6 7 8
0
输出 #1复制
1 1
5 8
2 4
4 2
7 3
8 5
6 6
3 7
1 1
5 8
2 4
4 2
7 3
8 5
6 6
3 7

本题好像横坐标和纵坐标互不相干 于是可以分别处理
对于横坐标 选择其又端点尽量靠左的,以尽量减少对后面点的影响
纵坐标同理

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define Maxn 5002
using namespace std;
struct Node {int id,lx,ly,rx,ry;int ansx,ansy,usedx,usedy;
}rb[Maxn];
inline bool cmp_x(Node a,Node b){ return a.rx < b.rx; }
inline bool cmp_y(Node a,Node b){ return a.ry < b.ry; }
inline bool cmp_id(Node a,Node b) { return a.id < b.id; }int main(int argc,char* argv[]) {int n;while(scanf("%d",&n) == 1 && n) {for(int i=1; i<=n; i++) {rb[i].usedx = rb[i].usedy = 0;rb[i].id = i;scanf("%d %d %d %d",&rb[i].lx,&rb[i].ly,&rb[i].rx,&rb[i].ry);}sort(rb + 1,rb + n + 1,cmp_x); int can;for(int i=1; i<=n; i++) {can = 0;for(int j=1; j<=n; j++) {if(rb[j].usedx == 0 && rb[j].lx <= i) {if(rb[j].rx < i) break;rb[j].ansx = i; rb[j].usedx = 1; can = 1; break;}}if(!can) break;}if(!can) printf("IMPOSSIBLE\n");else {sort(rb + 1 ,rb + n + 1,cmp_y);for(int i=1; i<=n; i++) {can = 0;for(int j=1; j<=n; j++){if(rb[j].usedy == 0 && rb[j].ly <= i) {if(rb[j].ry < i) break;rb[j].ansy = i; rb[j].usedy = 1;can = 1; break;}}if(!can) break;}if(!can) printf("IMPOSSIBLE\n");else {sort(rb + 1,rb + n + 1,cmp_id);for(int i=1; i<=n; i++) printf("%d %d\n",rb[i].ansx,rb[i].ansy);}}}return 0;
}

刘老师的代码没有排序,而是每次O(N)扫描,也可,运行效率应该会低,但是他的代码是真的简洁 有必要粘贴一下

#include<cstdio>
#include<cstring>
#include <algorithm>
using namespace std;// solve 1-D problem: find c so that a[i] <= c[i] <= b[i] (0 <= i < n)
bool solve(int *a, int *b, int *c, int n) {fill(c, c+n, -1);for(int col = 1; col <= n; col++) {// find a rook with smalleset b that is not yet assignedint rook = -1, minb = n+1;for(int i = 0; i < n; i++)if(c[i] < 0 && b[i] < minb && col >= a[i]) { rook = i; minb = b[i]; }if(rook < 0 || col > minb) return false;c[rook] = col;}return true;
}const int maxn = 5000 + 5;
int n, x1[maxn], y1[maxn], x2[maxn], y2[maxn], x[maxn], y[maxn];int main() {while(scanf("%d", &n) == 1 && n) {for (int i = 0; i < n; i++)scanf("%d%d%d%d", &x1[i], &y1[i], &x2[i], &y2[i]);if(solve(x1, x2, x, n) && solve(y1, y2, y, n))for (int i = 0; i < n; i++) printf("%d %d\n", x[i], y[i]);elseprintf("IMPOSSIBLE\n");}return 0;
}

这篇关于第四十三题 UVA11134 传说中的车 Fabled Rooks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/412682

相关文章

【BNU】33943 Super Rooks on Chessboard 【FFT】

【BNU】33943 Super Rooks on Chessboard UVA上的题,然而我怎么会蠢到去UVA呢!(其实是百度首先跳出来的是BNU → \to_ → \to) 题目分析: 设 numx numx为 N N个车没有覆盖的行数,numynumy为 N N个车没有覆盖的列数。 首先我们考虑没有主对角线覆盖这一条件时,总共的没有被覆盖的面积就是numx∗numynumx \ast

墨兰:花语寓意、神秘传说与独特魅力全解析

在繁花似锦的植物世界中,墨兰宛如一位优雅的隐士,静静地散发着独特的魅力。它那婀娜的身姿和淡雅的芬芳,仿佛在诉说着一个个古老而神秘的故事。当我们凝视着墨兰,不禁会被它那独特的气质所吸引,想要探寻它背后隐藏的花语深意以及那些流传千古的动人传说。 接下来,让我们一同走进墨兰的奇妙世界,去揭开它那神秘的面纱。 一、墨兰的花语与寓意 墨兰的花语丰富多样,象征着娴静、青春永驻、高雅淡泊等美好品质

探秘半枝莲:花语寓意深解、传奇传说追溯与卓越功效展现

在大自然的神秘宝藏中,有一种看似平凡却蕴含着无尽魅力的植物——半枝莲。它那娇小而鲜艳的花朵,仿佛是大自然精心雕琢的艺术品,散发着独特的魅力。当我们深入探寻半枝莲的世界时,会惊喜地发现它不仅有着迷人的花语寓意和传奇的传说故事,更有着令人瞩目的功效。那么,现在就让我们一同踏上这场关于半枝莲的奇妙之旅吧。 一、半枝莲的概述 半枝莲为唇形科黄芩属多年生草本植物。它的别名众多,如并头草、牙刷草、

探秘忽地笑:独特花语、神秘传说与丰富价值全解析

在神秘的植物王国中,有那么一种独特的存在 —— 忽地笑。它宛如一个隐藏着无数秘密的神秘精灵,悄然绽放在人迹罕至之处,散发着一种独特而又难以捉摸的气息。当你第一次听闻它的名字时,或许会被这奇特的称呼所吸引,心中涌起无限的好奇。而当你深入去了解它时,便会发现它背后所蕴含的花语和传说,如同一个深邃的漩涡,将你卷入一个充满奇幻色彩的世界。 接下来,让我们一同踏上探寻忽地笑神秘世界的奇妙之旅。 一、忽地

(白书训练计划)UVa 11134 Fabled Rooks(贪心)

题目地址:UVa 11134 这题因为行与列是无关的,互无影响的。所以可以将行或列分开来计算。这就相当于转化成了在期间[1,n]内选择n个不同的整数,使得第i个整数在闭区间[Li,Ri]内。这就转换成了一个贪心问题了。但是注意不能先按照左端点排序,再按右端点排序,然后尽量往左边放,比如,(1,1),(1,3),(2,2),这样是不对的,应该按右端点为主关键字排序,再按左端点为次关键字排序。看到网

白酒起源传说(三)——仪狄造酒说

在古代文献中,仪狄被记载为酿酒的始祖,这一创造更是与传说中的帝王夏禹相联系。据《吕氏春秋》记载:“仪狄作酒”。而在汉代刘向编纂的《战国策》中,也有着关于仪狄酿酒的故事。在这些古典文字里,仪狄被描述为一个致力于酿造美酒的人,他甚至将自己的酒献给了当时的君王夏禹。 故事中,仪狄将自酿的美酒呈现给夏禹,希望获得其赞赏。夏禹品尝之后,确实对酒的味道表示喜爱。然而,作为一位明智的君王,夏禹很快意识到酒精带

机器学习第四十三周周报 aGNN

文章目录 week43 aGNN摘要Abstract1. 题目2. Abstract3. 网络架构3.1 aGNN3.1.1 输入与输出模块3.1.2 嵌入层3.1.3编码器解码器模块:带有多头注意力层的GCN 3.2 可释性模型:SHAP 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 实验区域以及场景设置4.3.2 数据预处理 5. 结论6.代码

这就是传说中的能治疗说谎的果子

扫清了妖洞的吃饭 今天的扫清了妖洞的吃饭,妈心想,这就是传说中的能治疗说谎的果子,游泳可高兴了,她在吃树上最后一颗果子的时候,人们在那挑水,倍受瞩目的陶瓷女排姑娘们的辉煌之路,他们用神珠拯救了大森林,有一只小蚂蚁老爱说谎话,小蚂蚁爱说谎的坏习惯终于改正了。 如果我能让我的孩子不再说谎该多好阿,只见小猫怒眼圆睁也杀了进来,她们走得太艰难了,卫冕之路,她被一个人扔到了森林里,哦,她一看,我是树上

IOS学习之ActionSheet,传说中的popWindow(三)

这夏天来的太快,还没来的急去世界去看看,算了,在这看吧,每天的大白腿看的我也是心花怒放啊,看我的晚上无心撸码了。言归正传,必须得学习了,得像群里的大神看起了,什么(郭神了,泓洋神了,反正都是神),看见他们,我都觉得的自己。。。。。。这个控件使用频率比较高! 好简单: //// MyActionSheet.m// MyActionSheet//// Created by

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

We would like to place  n  rooks, 1 ≤  n  ≤ 5000, on a  n×n  board subject to the following restrictions The i-th rook can only be placed within the rectangle given by its left-upper corner (xl