×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
解題報告
#30025: 找支點O(1)的方法
Williecraft
(張哲維)
學校 : 國立臺中第一高級中學
編號 : 152427
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [220.134.17.21]
最後登入時間 :
2023-12-24 18:01:04
f638.
支點切割
--
APCS
201802
程式實作題
3
| From: [125.230.254.186] | 發表日期 : 2022-04-21 21:12
大家高中物理都有學過,質心是一個物體質量的中心,且
"
各點到質心的所有力矩會平衡",
對於一個粗度不計的棍子來說,質心就是能平衡此棍子的
支點
。
不難發現其實題目給的條件和公式就是在求力矩平衡,而P
i
的質就是質量(m),找到離支點最近又靠左的點(左右力矩相差最小)
只要自己設座標(x),用兩個前綴合紀錄m*x和m分別的合,而某段的質心位置就是該段(m*x總和)/(m總和)
再依據題目要求找到最近點,不要切到邊邊,就是所求支點位置了!用遞迴分治下去找的話,時間複雜度有
O(n+2
k
),
但又因為k必小於等於log
2
n
,所以大約只有
O(n)。
以下是我Python用此方法的成績,寫起來也非常簡單只有18行程式碼,但應該能再優化得更快
AC
(0.1s, 10.8MB)
ZeroJudge Forum