http://codeforces.com/contest/358/problem/D
题意:ai代表相邻的两个野兔都没有吃食物情况下的快乐系数,bi代表的是在相邻的两个野兔中有一个吃到食物的快乐系数,ci代表的是相邻的两个野兔都迟到事物的快乐系数,给你n个野兔的快乐系数,求最大快乐系数。
dp[i][0]表示先于i+1个吃到食物的最大快乐系数,dp[i][1]表示后于i+1个吃到食物的最大快乐系数。
1 #include2 #include 3 #include 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 }