標籤:
題目描述
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
/* f[i][0/1]代表第i分菜用小勺或筷子*/#include<cstdio>#include<iostream>#define M 110using namespace std;int f[M][2],a[M],b[M],c[M],n;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]); f[1][0]=a[1]+c[1];f[1][1]=b[1]; for(int i=2;i<=n;i++) { f[i][0]=min(f[i-1][0]+a[i],f[i-1][1]+a[i]+c[i]); f[i][1]=min(f[i-1][1]+b[i],f[i-1][0]+b[i]+c[i]); } printf("%d",min(f[n][0],f[n][1])); return 0;}View Code
windows 2013(codevs 1695)