Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΚλεόπατρος Δημητρακόπουλος Τροποποιήθηκε πριν 9 χρόνια
1
1 11502: Problem B: Rocket Stages ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11502: Problem B: Rocket Stages 解題者:李重儀 解題日期: 2008 年 10 月 5 日 題意:簡單的說,題目會給你一個火箭的各個 stage 的四個值 : 去除燃料後的 質量 S 公斤, 燃料質量 L 公斤, 引擎推力 T 牛頓, 燃料消耗數率 C 公斤 / 秒。 假設火箭垂直上升。當火箭上升時,有兩種力作用於其上,一為正在反應的 stage 的引擎推力 (T 牛頓向上 ) ,另一為重力 (9.8M 牛頓向下,M 為當時火箭的總 質量 ) ,火箭的加速度為 F/M (m/s^2) , F 為當時火箭所受的總作用力。火箭的 速度可由加速度積分而得。 題目會給你一連串的 stage 的資料,你要選擇其中的一些 stage 組成火箭 ( 至少 一個 ) ,而順序不可以改變,然後使最後火箭的速度最大。 火箭在燃燒時會從最底下的 stage 開始燒,燒完即丟棄,再換下一層,你選 的每層 stage 都可以燒。 由於安全的原因,火箭的加速度在它燒完之前都不能向下。火箭的總重量不 能超過 10000 公斤。所給予的 S,L,T,C 值都是整數。
2
2 題意範例: Sample Input:Output for Sample Input: 1 test case 的個數 90 最大的速率, 四捨五入到整數 1 stage 個數 N 9999 1 1000000 1 S L T C 解法: DP 針對任何一個 stage ,啟動過程中,質量對時間的函數為 M(t)=m+S+L-C*t ( 公斤 ) (m 為上層所選的 stage 的總質量, 假設從 t=0 時開始啟動 ) (0 = (m+S+L)*9.8 另外,對加速度積分並經過計算,可得此 stage 所能提供 的速度增加量為 Δv=(-T/C)ln(m+S)-9.8*(L/C)+(T/C)ln(m+S+L) (m/s)
3
3 解法: DP 令 f(i,M): 只考慮前 i 個 stage ,在所選的質量為 M 公 斤的情形下所能得到的速度增加量的最大值。 假設第 i 個 stage 的總質量為 x 公斤 (x=S i +L i ) ,若 x<M 或第 i 層 ( 在前 i-1 層的總質量為 (M-x) 公斤時 ) 經過計算無法使加速度永遠不向下,則此第 i 層 stage 一定不能選,所以 f(i,m)=f(i-1,m) 否則第 i-1 層有可能可以選擇,此時 f(i,m)=max{f(i-1,m),f(i-1,m-x)+ 第 i 個 stage 提供的 速度增加量 } 以以上方式,以 DP 計算,答案即為 max{f(N,1),f(N,2),…,f(N,10000)} 也就是考慮所有 N 個 stage ,最大的速度增加量。 最後要按照題目的要求,輸出四捨五入後的值。
4
4 解法範例:無 討論:無
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.