# Greedy# Math# Iteration

i428 - 1. 巴士站牌

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算經過一系列巴士站時,相鄰兩站之間行進時間的最大值和最小值,其中行進時間定義為曼哈頓距離。

解題思路

題目要求計算相鄰站點間曼哈頓距離的最大值和最小值。程式碼透過迴圈迭代讀取每個巴士站的座標,並計算與前一個站點的曼哈頓距離。在迭代過程中,更新最大值和最小值。初始時,最小值設定為一個很大的數,以確保第一個計算出的距離能正確更新最小值。

複雜度分析

  • 時間複雜度: O(n)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int x,y,ma,mi=1e9,n,lx,ly;
int main(){
	cin >> n;
	for(int i=0;i<n;++i){
		cin >> x >> y;
		if(i){
			ma=max(ma,abs(x-lx)+abs(y-ly));
			mi=min(mi,abs(x-lx)+abs(y-ly));
		}
		lx=x;
		ly=y;
	}
	cout << ma << " " << mi;
}

Discussion