题意:有一个NxN的棋盘,你需要在上面放N个?,它们互相之间不能攻击到,并且每个?只能放在指定的矩形范围里面。
?
思路:首先?之间不能互相攻击,那么每行每列有且仅有一个?,我们把每个?用坐标(x,y)表示出来,那么最后要求的其实就是任意两个?的x坐标要不一样,任意两个?的y坐标不一样。然后每个?的x和y有自己的范围.....!!!x和y是相互独立的,不会相互影响!!所以我们只需要先求出各自的横坐标,然后再求出各自的纵坐标就行了,不是吗?这时候,问题就变得相当简单了。我们的题目变成了在一条X轴上,有n条线段,每条线段你必须取一个点,而且每个线段取的点要互不相同。这个我们不是做过吗?直接用优先队列贪心就行了。
?
#include
#include
#include
#include
?