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

 

你可能感兴趣的:(res)