cf D. Dima and Hares

http://codeforces.com/contest/358/problem/D

题意:ai代表相邻的两个野兔都没有吃食物情况下的快乐系数,bi代表的是在相邻的两个野兔中有一个吃到食物的快乐系数,ci代表的是相邻的两个野兔都迟到事物的快乐系数,给你n个野兔的快乐系数,求最大快乐系数。

dp[i][0]表示先于i+1个吃到食物的最大快乐系数,dp[i][1]表示后于i+1个吃到食物的最大快乐系数。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 10000
 5 using namespace std;
 6 
 7 int n;
 8 int a[maxn],b[maxn],c[maxn];
 9 int dp[maxn][2];
10 
11 int main()
12 {
13     while(scanf("%d",&n)!=EOF)
14     {
15         for(int i=1; i<=n; i++)
16             scanf("%d",&a[i]);
17         for(int i=1; i<=n; i++)
18             scanf("%d",&b[i]);
19         for(int i=1; i<=n; i++)
20             scanf("%d",&c[i]);
21         dp[n][0]=a[n];
22         dp[n][1]=b[n];
23         for(int j=n-1; j>=1; j--)
24         {
25             dp[j][0]=max(dp[j+1][0]+b[j],dp[j+1][1]+a[j]);
26             dp[j][1]=max(dp[j+1][1]+b[j],dp[j+1][0]+c[j]);
27         }
28         printf("%d\n",dp[1][0]);
29     }
30     return 0;
31 }
View Code

 

posted @ 2014-08-26 15:10  null1019  阅读(122)  评论(0编辑  收藏  举报