G. 试题G:圈地养猪 15‘

描述
由于猪价暴涨,JM准备圈地养猪。

但是猪崽从哪来呢?当然是去抓野山猪咯~

已知每一头野山猪的坐标,现在JM需要用围栏围成一个矩形,在矩形内的猪就都属于JM了。围起来的野山猪当然是越多越好啦,贪心的JM想把所有的野山猪给围起来。但是JM不知道得准备多长的围栏。你能帮JM吗计算一下至少需要多长的围栏,围成的矩形能够把所有的野山猪围起来。

注意:

围栏的四个角必须在整数坐标点上,而且有野山猪的点是不能够构建围栏的~
所围矩形的边必须平行于x或者y轴。
输入
第一行输入一个整数nn,表示野山猪的头数

接下来nn行,每行输入两个整数x\ yx y,表示野山猪所处的位置(x,y)(x,y)

输出
输出一个整数,表示需要的围栏长度

样例
输入复制
4
0 0
1 1
2 2
3 3
输出复制
20
输入复制
5
44 62
34 69
24 78
42 44
64 10
输出复制
224
输入复制
4
1 100
1 0
1 -100
1 0
输出复制
408
提示
在这里插入图片描述


找到边界即可,注意,边界上不能有猪

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 1000, inf = 1e9;

int n;
int maxa = -inf, mina = inf, maxb = -inf, minb = inf;

int main(){
	cin >> n;
	while (n -- ){
		int x, y; cin >> x >> y;
		maxa = max(maxa, x);
		mina = min(mina, x);
		maxb = max(maxb, y);
		minb = min(minb, y);
	}
	
	int da = maxa - mina;
	int db = maxb - minb;
	
	cout << 2 * ((da + 2) + (db + 2))<< endl;
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值