[CF1713A Traveling Salesman Problem] 题解

[CF1713A Traveling Salesman Problem] 题解

水一篇题解

由于每个箱子要么在 x x x 轴上,要么在 y y y 轴上,而又得从原点开始,回到原点上,所以最优策略是:从原点开始,先走到 x x x 正半轴的最远端,再回到原点,再到 x x x 负半轴的最远端,再回到原点,再到 y y y 的正半轴…

所以答案是每个半轴到原点的最长距离之和的 2 2 2

下面贴出核心代码

int x_min = 0/* $x$ 负半轴*/, x_max = 0/* $x$ 正半轴*/;
int y_min = 0/* $y$ 负半轴*/, y_max = 0/* $y$ 正半轴*/;
for (int i = 0; i < n; i++) {
	int x, y; cin >> x >> y;
	if (x == 0)//如果在 $y$ 轴上
		y_min = min(y, y_min), y_max = max(y, y_max);
	if (y == 0)//如果在 $x$ 轴上
		x_min = min(x, x_min), x_max = max(x, x_max);
}
cout << 2 * (x_max - x_min + y_max - y_min) << endl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值