题目链接:http://codeforces.com/problemset/problem/358/D

题意:

  有n个物品A[i]摆成一排,你要按照某一个顺序将它们全部取走。

  其中,取走A[i]的收益为:

    (1)若A[i-1]和A[i+1]都没被取走,则收益为a[i]

    (2)若A[i-1]和A[i+1]被取走了一个,则收益为b[i]

    (3)若A[i-1]和A[i+1]都被取走,则收益为c[i]

    注:将A[1]的左边和A[n]的右边视为永远有一个取不走的物品。

  问你最大收益是多少。

题解:

  表示状态:

    dp[i][0/1] = max wealth

    表示A[i]比A[i-1]先取(0)或后取(1),此时取走A[1 to i-1]的最大收益。

  找出答案:

    ans = dp[n+1][1]

    因为可以看做A[n]右边有一个不取走的物品

    所以dp[n+1][1]对应的就是将所有物品取走的最大获益

  如何转移:

    dp[i][0] = max(dp[i-1][0]+b[i-1], dp[i-1][1]+c[i-1])

    dp[i][1] = max(dp[i-1][0]+a[i-1], dp[i-1][1]+b[i-1])

    根据A[i-1]的左右情况,加上对应的取走A[i-1]的获利,即为当前的总获利。

  边界条件:

    dp[1][0] = 0

    dp[1][1] = -INF

    因为将A[1]左边看作有一个物体,所以只能是A[1]先选,当前总获利为0。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 3005
#define INF 1000000000 using namespace std; int n;
int a[MAX_N];
int b[MAX_N];
int c[MAX_N];
int dp[MAX_N][]; void read()
{
cin>>n;
for(int i=;i<=n;i++) cin>>a[i];
for(int i=;i<=n;i++) cin>>b[i];
for(int i=;i<=n;i++) cin>>c[i];
} void work()
{
dp[][]=;
dp[][]=-INF;
for(int i=;i<=n+;i++)
{
dp[i][]=max(dp[i-][]+b[i-],dp[i-][]+c[i-]);
dp[i][]=max(dp[i-][]+a[i-],dp[i-][]+b[i-]);
}
cout<<dp[n+][]<<endl;
} int main()
{
read();
work();
}

最新文章

  1. ubuntu系统下如何修改host
  2. [deviceone开发]-do_Webview的基本示例
  3. SVN集中式版本控制器的安装、使用与常见问题汇总
  4. 【POJ】3207 Ikki&#39;s Story IV - Panda&#39;s Trick
  5. jvm运行时环境属性一览
  6. 【转】Mybatis/Ibatis,数据库操作的返回值
  7. GWP PHP auth page works
  8. hdu 1423 最长公共递增子序列
  9. meta property=og标签含义及作用
  10. Congos
  11. Java之恋
  12. Spark WordCount的两种方式
  13. 2018牛客网暑假ACM多校训练赛(第四场)A Ternary String 数论
  14. liMarquee – jQuery无缝滚动插件(制作跑马灯效果)
  15. vue-router 知识点
  16. 初探FFT(快速傅里叶变换)
  17. Shell或notepad连接虚拟机操作
  18. telnet 工具
  19. 使用js里面的迭代器filter实现数组去重
  20. SQL Server -&gt;&gt; Database Snapshot(数据块快照)

热门文章

  1. Redis用LPUSH和RPOP实现消息队列
  2. JSON解析工具-org.json使用教程
  3. [译]GLUT教程 - 改变窗体大小
  4. torrent&amp;BT百科
  5. 【JMeter4.0学习(十一)】之JMeter对(Mysql、Oracle)数据库性能测试脚本开发
  6. js中return;return true return false 的区别
  7. 微信小程序之如何注册微信小程序
  8. Linux下apache安装php
  9. 第三方苹果开发库之ASIHTTPRequest(翻译版)
  10. 替换jar包内指定的文件