UVa 11134 Fabled Rooks
题目大意:
给你n*n的棋盘,上面放n个车,使得任意两车互不攻击,要求第i个车在矩形Ri内.
若存在输出一组解,否则输出”IMPOSSIBLE”.
题目分析:
因为是在n*n的棋盘上放n个车,其实就有点类似于n皇后问题的放置方法,显然每行每列都要放一个,并且行与列是独立的,互不影响.
那么,若单独考虑行,矩形就被压缩成了线段,将线段看成是区间.实际上问题就转化为一段长为n的区间内,放置n个点,使得任意区间上都有点.
对于行和列各做一次这个操作即可.
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=5000+10;