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

开始题意理解错,整个就跪了= =

题目大意:从1到n的位置取数,取数的得到值与周围的数有没有取过有关,所有数都要取,求最终得到的最大结果

解题思路:dp题,转移方程如下

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,b,c分别表示周围没有数,有一个数,有两个数取过的情况。

dp[i][0]表示取i个位置时,i-1没取过的情况。(实际取数的情况,先i,再i-1)

dp[i][1]表示取i个位置时,i-1取过的情况。(实际取数的情况,先i-1,再i)

代码如下:

 // 2013/10/26
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 3005
int a[N],b[N],c[N];
int dp[N][];
int main()
{
int n,i;
memset(dp,,sizeof(dp));
scanf("%d",&n);
for(i=;i<=n;i++){
scanf("%d",&a[i]);
}
for(i=;i<=n;i++)
scanf("%d",&b[i]);
for(i=;i<=n;i++)
scanf("%d",&c[i]);
if(n==)
cout<<a[]<<endl;
else
{
dp[][]=b[];
dp[][]=a[];
// dp[i][0]表示i位置时(i-1)没喂过
// dp[i][1]表示i位置时(i-1)喂过
for(i=;i<=n;i++)
{
dp[i][]=max(dp[i-][]+b[i-],dp[i-][]+c[i-]);
//前者顺序n[i],n[i-1],n[i-2],后者顺序n[i-2],n[i],n[i-1]
dp[i][]=max(dp[i-][]+a[i-],dp[i-][]+b[i-]);
//n[i-1],n[i-2],n[i];n[i-2],n[i-1],n[i]
}
int ans=max(dp[n][]+a[n],dp[n][]+b[n]);
cout<<ans<<endl;
}
return ;
}

Codeforces Round #208 (Div. 2) 358D Dima and Hares的更多相关文章

  1. Codeforces Round #208 (Div. 2) A.Dima and Continuous Line

    #include <iostream> #include <algorithm> #include <vector> using namespace std; in ...

  2. Codeforces Round #208 (Div. 2) B Dima and Text Messages

    #include <iostream> #include <algorithm> #include <string> using namespace std; in ...

  3. Codeforces Round #208 (Div. 2)

    A - Dima and Continuous Line 水题:直接模拟: #include<cstdio> #define maxn 1005 using namespace std; ...

  4. Codeforces Round #167 (Div. 2) D. Dima and Two Sequences 排列组合

    题目链接: http://codeforces.com/problemset/problem/272/D D. Dima and Two Sequences time limit per test2 ...

  5. Codeforces Round #324 (Div. 2) D. Dima and Lisa 哥德巴赫猜想

    D. Dima and Lisa Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/probl ...

  6. Codeforces Round #214 (Div. 2) C. Dima and Salad (背包变形)

    C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  7. Codeforces Round #214 (Div. 2) C. Dima and Salad 背包

    C. Dima and Salad   Dima, Inna and Seryozha have gathered in a room. That's right, someone's got to ...

  8. Codeforces Round #324 (Div. 2)D. Dima and Lisa 数学(素数)

                                                     D. Dima and Lisa Dima loves representing an odd num ...

  9. Codeforces Round #553 (Div. 2)B. Dima and a Bad XOR 思维构造+异或警告

    题意: 给出一个矩阵n(<=500)*m(<=500)每一行任选一个数 异或在一起 求一个 异或在一起不为0 的每行的取值列号 思路: 异或的性质  交换律 x1^x2^x3==x3^x2 ...

随机推荐

  1. windows 2003 搭建一个vpn

    最近从Photonvps.com 租了一台windows主机用来测试网站,512MB的内存,35GB的硬盘空间,每个月500GB的流量和2个独立IP地址.我感觉价格偏贵,不过售后服务还是蛮不错的,每次 ...

  2. Oracle学习【语句查询】

    基本查询语句any和all不能单独使用,必须和比较符一起使用>any 大于最小的例如:select * from emp where sal >any(1000,2000);<any ...

  3. Java SE Java EE Java ME 的区别

    Java SE(Java Platform,Standard Edition) Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.J ...

  4. java中事件处理探究

    事件的触发可以源于用户,也可以用代码来主动设置事件的发生.如setSelected()java.awt.event中 听众接口 事件类 适配器类 ComponentListener     Conta ...

  5. 2014-11-26----css的简介

    CSS :层叠样式表 cascading style sheets 它的作用是:美化html网页 格式:样式名:值:样式名:值:样式名:值: 注释语法:/* 注释内容 */ 选中代码按TAB,代码左移 ...

  6. SQLITE和QT

    sqlite3数据库支持事务 例如: BEGIN DEFERRED TRANSACTION; INSERT INTO main.test_transaction (test_unique) VALUE ...

  7. Java面向对象程序设计--接口和内部类

    1.接口的定义: In the Java programming language, an interface is not a class but          staff[0] =       ...

  8. js隔行变色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 精通 Oracle+Python,第 5 部分:存储过程、Python 编程

    调用数据库存储过程及其他感兴趣的高级 Python 编程功能. 2010 年 3 月发布 对于涉及数据库的软件开发来说,有两种主流开发方法:一种是在应用程序中(对于三层体系结构,也可以是在中间件中)实 ...

  10. C语言学习总结(三) 复杂类型

    第五章.复杂数据类型 (数组.字符串.指针.结构体.枚举.共同体) 1.什么是数组? 概念:把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组: 按数组元素的类型不 ...