11012: comsic cabbages
DESCRIPTION
11012: Comsic Cabbages. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 1 1012: The 3n+1 Problem 解題者: 王嘉偉 解題日期: 200 7 年 4 月 10 日 題意: 給定一 Case 數量 N (0TRANSCRIPT
1
11012: Comsic Cabbages ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11012: The 3n+1 Problem 解題者:王嘉偉 解題日期: 2007 年 4 月 10 日 題意: 給定一 Case 數量 N (0<N<21) ,每一個 Case 包含 n 個
三維座標 (2<=n<=10^5) ,座標點的值介於 -10^8~10^8且為整數,求各個 Case 所有點中任兩點最大的距離。
距離的算法: a(1,2,3) 與 b(2,1,4) 的距離為 |2-1|+|1-2|+|4-3|=3
2
題意範例: 1 4 0 1 2 3 4 5 6 7 8 9 10 11 Case #1: 27 解法:數學分析 循序搜尋 解法範例: 由題意可推得所求為 |Xi-Xj|+|Yi-Yj|+|Zi-Zj| 的最大值,去掉三個
絕對直需要考量的情形共有八種 : +++ , ++- , +-+ , -++ etc… , 拆去絕對直整理之後便可得所
需要的座標性質。 Ex : 三個絕對值為 ++- 之情形 , 拆去絕對值符號後可整理成 (Xi+Yi-Zi) + (Zj-Xj-Yj) 要求此式的最大值,只需去搜尋座標值
X+Y-Z 最大之點及 Z-X-Y 最大之點算出其距離便是此情形下最佳解。
求出各情形的最佳解後,再取出數值最大 ( 即距離最大 ) 之解。
3
討論: 雖然絕對值拆除可能產生八種情形,但有些情況
是重複的不需再次計算。 Ex: ++- 與 --+ 拆解後為 (Xi+Yi-Zi) + (Zj-Yj-Xj) 與 (Xj+Yj-Zj) + (Zi-Yi-Xi)
i,j 僅是符號代表,實為兩種同樣的情形,故應掃描的情形僅為 4 種。
輸入座標需要一個 n 次迴圈, 4 個情形各需掃描 n個座標點,故時間複雜度為 O(n) 。