码迷,mamicode.com
首页 > 其他好文 > 详细

Axis-Parallel Rectangle

时间:2017-10-15 21:20:01      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:c++   standard   toggle   constrain   microsoft   interior   fine   mic   分享   

D - Axis-Parallel Rectangle


Time limit : 2sec / Memory limit : 256MB

Score : 400 points

Problem Statement

We have N points in a two-dimensional plane.
The coordinates of the i-th point (1≤iN) are (xi,yi).
Let us consider a rectangle whose sides are parallel to the coordinate axes that contains K or more of the N points in its interior.
Here, points on the sides of the rectangle are considered to be in the interior.
Find the minimum possible area of such a rectangle.

Constraints

  • 2≤KN≤50
  • −109≤xi,yi≤109(1≤iN)
  • xixj(1≤i<jN)
  • yiyj(1≤i<jN)
  • All input values are integers. (Added at 21:50 JST)

Input

Input is given from Standard Input in the following format:
N K  
x1 y1
:  
xN yN

Output

Print the minimum possible area of a rectangle that satisfies the condition.

Sample Input 1

Copy
4 4
1 4
3 3
6 2
8 1

Sample Output 1

Copy
21
One rectangle that satisfies the condition with the minimum possible area has the following vertices: (1,1)(8,1)(1,4) and (8,4).
Its area is (8−1)×(4−1)=21.

Sample Input 2

Copy
4 2
0 0
1 1
2 2
3 3

Sample Output 2

Copy
1

Sample Input 3

Copy
4 3
-1000000000 -1000000000
1000000000 1000000000
-999999999 999999999
999999999 -999999999
Sample Output 3
3999999996000000001
Watch out for integer overflows.
 
 
 
// N 个点,选出一个最小的矩形,包括至少 k 个点,求这最小的矩形的面积
// 枚举,疯狂枚举就行
技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define MOD 998244353
 4 #define INF 0x3f3f3f3f3f3f3f3f
 5 #define LL long long
 6 #define MX 55
 7 struct Node
 8 {
 9     LL x, y;
10     bool operator < (const Node &b)const{
11         return x<b.x;
12     }
13 }pt[MX];
14 
15 int k, n;
16 
17 int main()
18 {
19     scanf("%d%d",&n,&k);
20     for (int i=1;i<=n;i++)
21         scanf("%lld%lld",&pt[i].x, &pt[i].y);
22     sort(pt+1,pt+1+n);
23     LL area = INF;
24     for (int i=1;i<=n;i++)
25     {
26         for (int j=i+1;j<=n;j++)
27         {
28             LL miny = min(pt[i].y, pt[j].y);
29             LL maxy = max(pt[i].y, pt[j].y);
30             for (int q=1;q<=n;q++)
31             {
32                 if (pt[q].y>maxy||pt[q].y<miny) continue;
33                 int tot = 0;
34                 for (int z=q;z<=n;z++)
35                 {
36                     if (pt[z].y>maxy||pt[z].y<miny) continue;
37                     tot++;
38                     if (tot>=k)
39                         area = min(area, (maxy-miny)*(pt[z].x-pt[q].x));
40                 }
41             }
42         }
43     }
44     printf("%lld\n",area);
45     return 0;
46 }
View Code

 

 
 

Axis-Parallel Rectangle

标签:c++   standard   toggle   constrain   microsoft   interior   fine   mic   分享   

原文地址:http://www.cnblogs.com/haoabcd2010/p/7673891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!