dp[ i ][ 0 ] : 第i个位置不取

dp[ i ][ 1 ] : 第i个位置取

这样就可以得到状态转移方程:

dp[i][0]=max(max(dp[i][0],dp[i-1][1]),dp[i-1][0]);//这位置不选则前面位置可选可不选
dp[i][1]=max(dp[i][1],dp[i-1][0]+a[i]); 这位置选则前面位置必不选

然鹅要保证1和n不能相邻嘛,所以就跑两边。一遍不选1,n可选可不选,一遍选1,n必不选。这三个情况取max。
 #include <bits/stdc++.h>
using namespace std;
#define maxn 50050
int dp[maxn][],a[maxn];
int main(){
ios::sync_with_stdio();
cin.tie(); cout.tie();
int n; cin>>n;
for(int i=;i<n;i++) cin>>a[i];
//不选第一个
dp[][]=,dp[][]=a[];
for(int i=;i<n;i++){
dp[i][]=max(max(dp[i][],dp[i-][]),dp[i-][]);
dp[i][]=max(dp[i][],dp[i-][]+a[i]);
}
int ans=max(dp[n-][],dp[n-][]);
//选第一个,第二个一定不选
memset(dp,,sizeof(dp));
dp[][]=dp[][]=a[];
for(int i=;i<n;i++){
dp[i][]=max(max(dp[i][],dp[i-][]),dp[i-][]);
dp[i][]=max(dp[i][],dp[i-][]+a[i]);
}
ans=max(ans,dp[n-][]);
cout<<ans<<endl;
return ;
}

51nod——2487小b和环的更多相关文章

  1. 51nod 1471 小S的兴趣 | 分块 链表

    51nod 1471 小S的兴趣 题面 小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题 ...

  2. 微信小程序 使用环信聊天工具

    当时做微信小程序环信的时候,没有遇到太多的问题,因为找到了一个例子,有兴趣的朋友可以把这个包下载下来看一下,写的超级的号,使用起来也特别简单,appkey需要自己配置,从环信官网https://con ...

  3. 51nod 1631 小鲨鱼在51nod小学

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务.   ...

  4. 51nod 1471 小S的兴趣 sqrt

    小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题有两种类型: 1.      在数组下标 ...

  5. 51nod 1831 小C的游戏

    小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...

  6. 51nod 2489 小b和灯泡

    小b有n个关闭的灯泡,编号为1...n. 小b会进行n轮操作,第i轮她会将编号为i的倍数的灯泡的开关状态取反,即开变成关,关变成开. 求n轮操作后,有多少灯泡是亮着的. 收起   输入 输入一个数字表 ...

  7. 51nod 2486 小b和矩阵

    小b有一个m行n列的矩阵. 她会从(1,1)开始,顺时针螺旋访问该矩阵,每个元素恰好被访问一次. 请你按小b的访问顺序输出每个元素. 收起   输入 第一行输入两个数m和n,其中0<m,n≤50 ...

  8. 51nod 2485 小b重排字符串

    小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同. 请你判断小b是否可能成功. 样例解释:将"aab"重排为"aba"即可. 收起   输入 输入一 ...

  9. 51nod 1643 小Q的家庭作业

    题意: f(n) = sigma(gcd(i,n))  1 <= i <= n g(n) = sigma(f(d))    d | n n = x1 * x2 * ... * xm 其中 ...

随机推荐

  1. Ubuntu16.04安装Nvidia显卡驱动+Cuda8.0+Cudnn6.0

    一.安装Nvidia显卡驱动(gtx1050ti) 参考链接:Ubuntu16.04.2 LTS 64bit系统装机记录中的显卡驱动安装部分. 二.安装Cuda8.0 1.确定自己的系统信息,以Ubu ...

  2. Python 简单的方法爬取b站dnf视频封面

    import urllib.request cnt=0 def instr(keystr): st=keystr.find('(')+1 strhtml=keystr[st:len(keystr)-1 ...

  3. TOMCAT调优内容

    使用NIO EndPoint connector线程数, 最大并发数 最大请求数 阻塞队列大小 jvm Xms Xmm maxMetaspace gc收集器 应用app逻辑优化:这个才是重点

  4. (转)CentOS(5.8/6.4)linux生产环境若干优化实战

    CentOS(5.8/6.4)linux生产环境若干优化实战 原文:http://blog.51cto.com/oldboy/1336488 特别说明:本文来自老男孩linux培训VIP学生学习笔记. ...

  5. Windows进程通信之一看就懂的匿名管道通信

    目录 进程通信之一看就懂的匿名管道通信 一丶匿名管道 1.1何为匿名管道 1.2创建匿名管道需要注意的事项 1.3 创建匿名管道需要的步骤 1.4代码例子 1.5代码运行截图 进程通信之一看就懂的匿名 ...

  6. SpringMVC核心技术---转发和重定向

    @Controller public class Mycontroller { //转发 @RequestMapping("/adduser") public String add ...

  7. spring boot 监控与管理(actuator)

    Spring POMs 中提供了一个特殊的依赖模块,即spring-boot-starter-actuator,我们只需要在我们的POM中添加依赖即可 <!-- 监控 管理 --> < ...

  8. echarts的title和legend重合解决(各种小细节)

    一:关于title与legend重叠 1.重合样子 2.解决办法: legend:{ show: true, top:"6%",//与上方的距离 可百分比% 可像素px }, 3. ...

  9. JavaScript 创建对象的七种方式

    转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...

  10. C# 只运行一个实例 ShowWindowAsync 窗体隐藏时失效 解决方案

    如果窗体已经隐藏,那么利用instance.MainWindowHandle得到的句柄为空,继而ShowWindowAsync 操作失败 不过我们可以使用FindWindow来查找到指定窗体的句柄 只 ...