POJ-3681(搜能包住m个点的最小矩形面积)

直接上code

int m, n;
struct point
{
	int x, y;
} wo[205];
bool cmp(point a, point b)
{
	if (a.x < b.x) return true;
	if (a.x == b.x) return a.y < b.y;
	return false;
}
int main()
{
	int cases, i, j, k;
	scanf("%d", &cases);
	while (cases--) {
		scanf("%d%d", &n, &m);
		for (i = 0; i < n; ++i) {
			scanf("%d%d", &wo[i].x, &wo[i].y);
		}
		sort(wo, wo + n, cmp);
		if (m == 1) {
			printf("4\n");
			continue;
		}
		int min = 0x7fffffff;
		for (i = 0; i <= n - m; ++i) {
			for (j = i + m - 1; j < n; ++j) {
				int index = 0;
				int tmp[205];
				for (k = 0; k < n; ++k) {
					if (wo[k].x >= wo[i].x && wo[k].x <= wo[j].x) {
						tmp[index++] = wo[k].y;
					}
				}
				sort(tmp, tmp + index);
				for (k = 0; k <= index - m; ++k) {
					int left = wo[i].x;
					int right = wo[j].x;
					int up = tmp[k + m - 1];
					int down = tmp[k];
					int s = (right - left + 2) * (up - down + 2);
					if (s < min) min = s;
				}
			}
		}
		printf("%d\n", min);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值