NOIP2002矩形覆盖

2014年1月13日6,2422

题目描述 Description

在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示。例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7)

这些点可以用 k 个矩形(1<=k<4)全部覆盖,矩形的边平行于坐标轴。当 k=2 时,可用如图二的两个矩形 sl,s2 覆盖,s1,s2 面积和为 4。问题是当 n 个点坐标和 k 给出后,怎样才能使得覆盖所有点的 k 个矩形的面积之和为最小呢。约定:覆盖一个点的矩形面积为 0;覆盖平行于坐标轴直线上点的矩形面积也为0。各个矩形必须完全分开(边线与顶点也都不能重合)。

输入描述 Input Description

n k
xl y1

x2 y2
… …
xn yn (0<=xi,yi<=500)

输出描述 Output Description

一个整数,即满足条件的最小的矩形面积之和。

样例输入 Sample Input

4 2
1 1
2 2
3 6
0 7

样例输出 Sample Output

4

数据范围及提示 Data Size & Hint

k<4

官方是k<=4,但是标程解法在k=4时是有反例的。官方的数据也没有出现k=4的情况

代码

乍一看好像是对的,不过是有反例的,但是由于数据太水,你懂得

还可以按x,y进行排序后做俩次取最小值。。。。我无法证明其正确性,这算高级骗分么。。

还是搜索比较保险

 

avatar
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Terrasse Recent comment authors
  Subscribe  
提醒
Terrasse
Terrasse

博主您好,今天下午调试此题时我用您dfs版本的代码对拍时发现始终拍不上,经过仔细研究后发现您的代码中判断两个矩形是否重叠的方法有些bug,具体来讲就是当两个矩形呈十字形交叉时,两矩形重叠,而A矩形的任何一个顶点均不在B矩形内部,您的coin()函数对此反例会产生误判。hack数据如下:
4 2
7 4
5 5
3 4
4 2

标准输出:
4

Albert

如果点的数量是50,,,那么就会超时,,,博主的代码是跟点的个数相关的。。。
本人苟蒻。。。。借博主代码一测,,结果超时。。。