# Math# Greedy

d127 - 二、牧场面积

🔗 前往 ZeroJudge 原題

題目描述

題目要求給定一條長度為 L 的圍欄,用它圍成一個長寬皆為整數的矩形牧場,並求出能圍成的最大面積。

解題思路

由於矩形的周長固定為 L,長和寬的關係可以表示為 2 * (length + width) = L,因此 length + width = L / 2。為了最大化面積 length * width,我們需要盡可能使長和寬接近。 當 L/2 為奇數時,最佳的長和寬分別為 (L/2)/2 和 (L/2)/2 + 1。 當 L/2 為偶數時,最佳的長和寬分別為 (L/2)/2 和 (L/2)/2。 程式碼直接計算出 L/2 的值,然後根據其奇偶性計算出最大面積。

複雜度分析

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

程式碼

#include <iostream>

using namespace std;

int main(){
	long long int a=0;
	while(cin >> a){
		long long int b=a/2;
		if(b%2==1){
			cout << (b/2)*(b/2+1) << endl;
		}
		else{
			cout << (b/2)*(b/2) << endl; 
		}
	}
}

Discussion