51nod——2487小b和环
2024-08-29 18:08:10
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 ;
}
最新文章
- POJ1837 Balance[分组背包]
- 安卓开发_浅谈SubMenu(子菜单)
- html页面元素加载顺序
- ASP.NET 分页控件
- DML 数据操控语言
- CSS背景与列表
- UITableViewCell 高度计算从混沌初始到天地交泰
- iOS应用开发:什么是ARC?
- 普林斯顿大学算法课 Algorithm Part I Week 3 快速排序 Quicksort
- iptables 简单配置
- Java并发编程:如何创建进程?
- 【python密码学编程】6.凯撒加密法
- Linux指令--more,less
- Android_scaleType属性
- nginx配置文件详细解读
- max (Largest elements in array)
- springbank 开发日志 阅读spring mvc的源代码真是受益良多
- python模拟艺龙网登录requests包
- STL之stack容器
- js异步计时器
热门文章
- 微信小程序在sublime开发代码高亮显示
- code和pre竟然有区别!!!!
- codeforces round 472(DIV2)D Riverside Curio题解(思维题)
- 洛谷P4891 序列 || 膜法阵,魔法阵
- 【密码学】SHA1算法实现及详解
- phpcms Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE错误
- 《C#高效编程》读书笔记11-理解短小方法的优势
- JFrame 文本打印
- 金三银四面试季节之Java 核心面试技术点 - JVM 小结
- spring-boot整合shiro作权限认证