题干:

数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai,都满足1 <= Ai <= Bi。数组A的代价定义如下:

(公式表示所有两个相邻元素的差的绝对值之和)

给出数组B,计算可能的最大代价S。

Input

第1行:1个数N,表示数组的长度(1 <= N <= 50000)。 第2 - N+1行:每行1个数,对应数组元素Bi(1 <= Bi <= 10000)。

Output

输出最大代价S。

Sample Input

5
10
1
10
1
10

Sample Output

36

解题报告:

如果直接按照题意定义dp[i][j]代表截止到第i个数,且第i-1个数选的是j,的最大代价。这样转移的话显然就炸了。我们通过分析问题不难发现,因为代价函数是绝对值的形式,那么要想让这个代价最大,很显然要么取最小值,要么取b[i],所以直接dp[n][2]其实就可以解决这个问题了。这样就大大缩小了状态个数,也方便了求解。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2e5 + 5;
int n,a[MAX];
ll dp[MAX][2];
int main()
{cin >> n;for(int i = 1; i<=n; i++) {scanf("%d",a+i);if(i == 1) continue;dp[i][0] = max(dp[i-1][0],dp[i-1][1] + abs(a[i-1]-1));dp[i][1] = max(dp[i-1][0] + abs(a[i]-1),dp[i-1][1] + abs(a[i]-a[i-1]));}cout << max(dp[n][0],dp[n][1]) << endl;return 0 ;
}

【51Nod - 1270】数组的最大代价(dp,思维)相关推荐

  1. 51nod 1270 数组的最大代价

    1270 数组的最大代价 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 数组A包含N个元素A1, A2......AN.数组B包 ...

  2. 51nod 1270 数组的最大代价 思路:简单动态规划

    这题是看起来很复杂,但是换个思路就简单了的题目. 首先每个点要么取b[i],要么取1,因为取中间值毫无意义,不能增加最大代价S. 用一个二维数组做动态规划就很简单了. dp[i][0]表示第i个点取1 ...

  3. CSP-S 2019————Emiya 家今天的饭————DP+思维

    题解:本题主要考查DP+思维. 简要题意:一个矩阵,要求每行只选一个节点,每列选的节点不能超过所有选的节点的一半,不能不选,给出每个节点的选择方案数,求总方案数. 1.DP+思维: (1).维护每列已 ...

  4. Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)

    Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...

  5. CF946D Timetable 背包dp + 思维转换

    传送门 文章目录 题意: 思路: 题意: n,m,k≤500n,m,k\le500n,m,k≤500 思路: 将其转换成背包的模型,就可以想出来一个很明显的dpdpdp状态:f[i][j]f[i][j ...

  6. 51NOD 1125(交换机器最小代价) (贪心) 思想 !思想!

    题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1125 1125 交换机器的最小代价 基准时间限制:1 秒 ...

  7. Codeforces Round #693 (Div. 3) G. Moving to the Capital dp + 思维

    传送门 题意: 给一个图,111号点为中心点,定义dis[i]dis[i]dis[i]表示111号点到iii的距离.现在有三种移动方式 (1)(1)(1)从iii移动到jjj且dis[i]<di ...

  8. 2021牛客NOIP提高组OI赛前模拟赛第一场T2——牛牛和数组操作(区间dp)

    牛牛和数组操作 description solution code description [题目描述] 有n + 2个整数a0, a1, . . . , an, an+1, a0 = an+1 = ...

  9. BZOJ 1270 雷涛的小猫 dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1270 题目大意: 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助 ...

最新文章

  1. 云计算、大数据、物联网等IT技术发展趋势
  2. 【Spring】12、Spring Security 四种使用方式
  3. cad2016中选择全图字体怎么操作_LOL无限火力凯隐全图W技能BUG怎么卡 无限火力凯隐全图W技能BUG卡法介绍...
  4. dos中特殊符号命令的应用
  5. Android电池电量更新 - BatteryService(转)
  6. 如何将一个数据库中的一个表复制到另一个数据库中去
  7. mariadb使用mysql驱动_MariaDB安装与使用
  8. leetcode - 226. 翻转二叉树
  9. 超级简单的Region对比识别验证码
  10. 禅道PMS兼容redmine用户认证接口
  11. Android中RelativeLayout及TableLayout使用说明
  12. Arcpy实现dem数据主河网自动提取
  13. python中的dict是什么数据类型_Python基本数据类型之dict
  14. Gartner发布2011年SIEM市场分析报告(幻方图)
  15. 配置追踪者—Scylla v1(***测试工具)
  16. 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(二)
  17. 最小二乘法正规方程推导过程
  18. vue模板引擎_Vue.js模板引擎理解
  19. HTML网页图片滚动代码
  20. 【数据结构与算法】——一文带你理清线性表的基础(java代码演示)

热门文章

  1. 流量专家为114搜索提供权威流量访问统计
  2. [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]
  3. [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]
  4. Linux启动过程以及初始化
  5. 台达asda-b2伺服驱动器说明书_台达解决方案提升粉末冶金液压机的控制精度
  6. 538B. Quasi Binary
  7. 3583. 整数分组
  8. Mysql数据库---约束类型_mysql数据库的数据类型及约束
  9. java序列化写法_java-spark的各种常用算子的写法
  10. 2异常处理_Java处理异常2种机制关键字区别解析