题意:

给你一个长度为n个序列v,你需要从中找一个子序列。这个子序列的值等于:子序列中奇数下标的值-偶数下标的值

你需要使得这个值尽可能大,让你输出这个最大值

题解:

dp[i][0]表示:在原序列从1到i位置中找一个子序列,这个子序列长度为偶数的子序列最大值

dp[i][1]表示:在原序列从1到i位置中找一个子序列,这个子序列长度为奇数的子序列最大值

初始化:

dp[i][0]=0

dp[i][1]=v[i]

转移方程:

1、dp[i][0]=max(dp[i-1][1]-v[i],dp[i-1][0]);

它的值或着是继承上一个dp[i-1][0],或者是由之前的奇数长度再加上vi构成一个偶数长度序列dp[i-1][1]-vi

dp[i][1]=max(dp[i][1],max(dp[i-1][0]+v[i],dp[i-1][1]));

它的值可以由本身得到(因为它可以不取之前的序列,它自己就能构成一个长度为1的子序列),或者是继承上一个dp[i-1][1],或者是由之前的偶数长度再加上vi构成一个奇数长度序列dp[i-1][0]+vi

代码:

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=3e5+10;
ll v[maxn],q[maxn][2];
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
ll n,m;
scanf("%lld%lld",&n,&m);
ll maxx=0;
for(ll i=1;i<=n;++i)
{
scanf("%lld",&q[i][1]);
v[i]=q[i][1];
q[i][0]=0;
}
//printf("%lld %lld\n",q[1][0],q[1][1]);
for(ll i=2;i<=n;++i)
{
q[i][0]=max(q[i-1][1]-v[i],q[i-1][0]); //1 3 2
q[i][1]=max(q[i][1],max(q[i-1][0]+v[i],q[i-1][1]));
//printf("%lld %lld\n",q[i-1][0],q[i-1][1]);
}
printf("%lld\n",max(q[n][1],q[n][0]));
}
return 0;
}

最新文章

  1. Python开发程序:选课系统-改良版
  2. iOS设备的越狱方法
  3. 通过WMI - Win32_Processor - ProcessorId获取到的并不是CPU的序列号,也并不唯一
  4. 【转载】TalkingData首席金融行业专家鲍忠铁:18亿数据解读移动互联网
  5. UIView的一些常用属性和方法
  6. UNIX环境高级编程--高级I/O(三)
  7. 史上最全常用正则表达式(Javascript公众号推文)
  8. Java课程设计报告——学生成绩管理系统
  9. AI-认证
  10. vue Bus总线
  11. Robot Movement(机器人移动)
  12. RCC 和 RTC
  13. 一个神奇的BUG :Failed to finalize session : INSTALL_FAILED_INVALID_APK: /data/app/vmdl99393454.tmp/10_slice__ signatures are inconsistent
  14. Delphi 动态链接库的动态和静态调用 (仔细读一下)
  15. C++ 类中的静态成员变量,静态成员函数
  16. [CQOI2015]标识设计
  17. Chrome浏览器保存微信公众号文章中的图片
  18. 【python】if __name__ == &#39;__main__&#39;
  19. 算法笔记_091:蓝桥杯练习 递推求值(Java)
  20. temp8

热门文章

  1. 十八:SQL注入之堆叠及绕WAF
  2. 基于Python开发数据宽表实例
  3. zabbix自定义监控nginx
  4. 创建mysql帐户
  5. 2021升级版微服务教程7-OpenFeign实战开发和参数调优
  6. 一文读懂k8s之Pod安全策略
  7. Eclipse中的可视化图形界面设计插件windowbuilder
  8. 微信登录4-开发回调URL
  9. 配置 containerd 镜像仓库完全攻略
  10. js千分位分隔,数字货币化方法学习记录