51nod 1270 数组的最大代价
1270 数组的最大代价
题目来源: HackerRank
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
第1行:1个数N,表示数组的长度(1 <= N <= 50000)。 第2 - N+1行:每行1个数,对应数组元素Bi(1 <= Bi <= 10000)。
输出最大代价S。
5 10 1 10 1 10
36
/*
51nod 1270 数组的最大代价problem:
数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai,都满足1 <= Ai <= Bi。
数组A的代价定义如下:
两个相邻元素A的差的绝对值之和solve:
按照贪心的思路来,感觉肯定是取 B[i]或者1. 所以第i步的情况应该是由i-1推过来的.
但是写的时候,觉得如果第i位如果取最大值,那么i-1就取最小值mdzz,所以少了一些情况. 实际上i-1的最大最小值都应该考虑.hhh-2016/09/03 13:32:28
*/
#pragma comment(linker,"/STACK:124000000,124000000")
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <vector>
#include <math.h>
#include <queue>
#include <set>
#include <map>
#define lson i<<1
#define rson i<<1|1
#define ll long long
#define clr(a,b) memset(a,b,sizeof(a))
#define scanfi(a) scanf("%d",&a)
#define scanfs(a) scanf("%s",a)
#define scanfl(a) scanf("%I64d",&a)
#define scanfd(a) scanf("%lf",&a)
#define key_val ch[ch[root][1]][0]
#define eps 1e-7
#define inf 0x3f3f3f3f3f3f3f3f
using namespace std;
const ll mod = 1e9+7;
const int maxn = 50010;
const double PI = acos(-1.0);ll dp[maxn][2];
ll a[maxn];
int main()
{int n;while(scanfi(n) != EOF){clr(dp,0);for(int i = 1;i <= n;i++){scanfl(a[i]);}
// dp[1][1] = a[1];
// dp[1][0] = 1;for(int i =2; i<=n;i++){dp[i][1] = dp[i-1][0] + a[i] - 1LL;dp[i][0] = dp[i-1][1] + a[i-1] - 1LL;dp[i][1] = max(dp[i-1][1] + (a[i] - a[i-1]),dp[i][1]);dp[i][0] = max(dp[i-1][0],dp[i][0]);}printf("%I64d\n",max(dp[n][0],dp[n][1]));}return 0;
}
转载于:https://www.cnblogs.com/Przz/p/5836870.html
51nod 1270 数组的最大代价相关推荐
- 51nod 1270 数组的最大代价 思路:简单动态规划
这题是看起来很复杂,但是换个思路就简单了的题目. 首先每个点要么取b[i],要么取1,因为取中间值毫无意义,不能增加最大代价S. 用一个二维数组做动态规划就很简单了. dp[i][0]表示第i个点取1 ...
- 【51Nod - 1270】数组的最大代价(dp,思维)
题干: 数组A包含N个元素A1, A2......AN.数组B包含N个元素B1, B2......BN.并且数组A中的每一个元素Ai,都满足1 <= Ai <= Bi.数组A的代价定义如下 ...
- 51NOD 1125(交换机器最小代价) (贪心) 思想 !思想!
题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1125 1125 交换机器的最小代价 基准时间限制:1 秒 ...
- 51nod 修改数组
修改数组 给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数.问最少需要修改几个数? Input 第1行:一个数N表示序列的长度(1 <= N ...
- 51NOD 1001 数组中和等于K的数对
给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...
- 51nod 1215 数组的宽度
N个整数组成的数组,定义子数组a[i]..a[j]的宽度为:max(a[i]..a[j]) - min(a[i]..a[j]),求所有子数组的宽度和. Input 第1行:1个数N,表示数组的长度 ...
- 双目立体匹配经典算法之Semi-Global Matching(SGM)概述:匹配代价计算之互信息(Mutual Information,MI)...
半全局立体匹配算法Semi-Global Matching,SGM由学者Hirschmüller在2005年所提出1,提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况 ...
- 数组(一维数组,二维数组)
目录 一维数组 一维数组的声明 一维数组的使用 选择排序 二维数组 数组的优点 数组的缺点 一维数组 一维数组的声明 在前面我们已经学习了如何声明变量,如 int a: 那么如果让你声明10个呢 你可 ...
- 【理论恒叨】【立体匹配系列】经典SGM:(1)匹配代价计算之互信息(MI)
半全局立体匹配算法Semi-Global Matching,SGM由学者Hirschmüller在2005年所提出1,提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况 ...
最新文章
- “AI+”赋能元宇宙,一文探讨智能交互的技术支撑
- MySQL高级 - 并发参数调整
- 定义坐标系-尚未成功
- 横向排列两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法
- mybatis学习(9):mybatis连接mysql数据库
- 【原创】线上环境 SYN flooding 问题排查
- java manager.apk_java实现静默安装apk
- 【代码源 Div1 - 102】#323. 最长因子链(dp)
- 代码整洁之道读书笔记----第一章---综述--第一节-混乱代码和华丽的新系统
- 329例精选matlab算法原理及源码详解——老生谈算法
- Ubuntu系统未发现vim命令
- 小米一键上锁工具_便宜好用:小米智能门锁E 上手体验报告
- 魔方矩阵c语言,C语言 检验并打印魔方矩阵 在下面的5×5魔方矩阵中,每一行、每一列、...
- Tar的详细用法(转自Linux伊甸园)
- wps文字表格制作拼音田字格模板_用WPS表格快速制作拼音田字格的方法
- FAT文件系统介绍以及FatFs的移植
- linux截屏 保存目录,linux设置截屏图片的保存路径
- 普通高等学校毕业生登记表 计算机水平,普通高等学校全日制毕业生登记表自我鉴定怎么写...
- Minecraft 材质包制作入门 保姆级教程 (一)
- 云计算开发技术Python自动化运维开发实战二
热门文章
- centos7 gitlab安装
- escape()、encodeURI()、encodeURIComponent() difference
- 【Red Hat 】vim编辑器的常用命令以及使用技巧
- LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)...
- Akka 接收消息超时的处理_Receive Timeout
- centos增加软连接
- “蓝桥杯”软件大赛入门训练4道题
- flex air openWithDefaultApplication 时出现Illegal ...
- Jquery 将后台返回的字符串转换成Json格式的数据
- 互联网协议 — GRE 通用路由封装协议