30 likes | 108 Views
11012: Comsic Cabbages. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 1 1012: The 3n+1 Problem 解題者: 王嘉偉 解題日期: 200 7 年 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) 的距離為
E N D
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
題意範例: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最大之點算出其距離便是此情形下最佳解。 求出各情形的最佳解後,再取出數值最大(即距離最大)之解。
討論: 雖然絕對值拆除可能產生八種情形,但有些情況是重複的不需再次計算。 Ex: ++- 與 --+ 拆解後為 (Xi+Yi-Zi) + (Zj-Yj-Xj) 與 (Xj+Yj-Zj) + (Zi-Yi-Xi) i,j僅是符號代表,實為兩種同樣的情形,故應掃描的情形僅為 4 種。 輸入座標需要一個n次迴圈,4個情形各需掃描n個座標點,故時間複雜度為 O(n)。