標籤:
1695 windows 2013
時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold題解 查看運行結果 題目描述
Description
話說adamyi編的Windows 2013逾時了(- -!),所以他不得不在自己家門口親眼見證這個電影般的情境。雖然他不想錯過這個美妙的時刻,但是他的肚子一再抗議,要求先吃完這最後的晚餐。
現在adamyi準備依次吃n道菜。但是他只使用勺子和筷子吃,勺子和筷子可以交替使用,但是同一種菜只能用一種餐具,在開飯前他拿的是筷子。用勺子和筷子吃第i道菜的時間分別是a_i和b_i。吃第i道菜之前筷子和勺子交換的時間為c_i。
現在請你告訴adamyi按他的計劃依次吃完這n道菜,最小需要多少時間。
輸入描述
Input Description
第一行,一個正整數n(1<=n<=100) 以下n行,分別是三個正整數a_i,b_i,c_i(1<=a_i,b_i,c_i<=10000) |
|
輸出描述
Output Description
一個數,最短時間
範例輸入
Sample Input
3
20 40 20
10 4 25
90 100 5
範例輸出
Sample Output
139
資料範圍及提示
Data Size & Hint
PS:我們假設adamyi的肚子足夠大,足以吃完100道菜…… Windows 2013:adamyi用一種二次元的語言寫的系統,因為非常不穩定,所以只在二次元銷售。 |
分類標籤
Tags 點此展開 動態規劃
題解:
水水的背包dp
AC代碼:
#include<iostream>using namespace std;const int N=110;int n,a[N],b[N],c[N],f[N][2];int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i]; f[1][0]=b[1]; f[1][1]=c[1]+a[1]; for(int i=2;i<=n;i++){ f[i][0]=min(f[i-1][0]+b[i],f[i-1][1]+c[i]+b[i]); f[i][1]=min(f[i-1][0]+a[i]+c[i],f[i-1][1]+a[i]); } cout<<min(f[n][0],f[n][1])<<endl; return 0;}
1695 windows 2013