分析

考虑每次都是取出一个连续段置换一下,

可以预处理出相邻差的绝对值的前缀和,

但是如果正序无法知道上一段是从哪个终止的

所以倒序就可以了


代码

#include <cstdio>
#include <cctype>
#include <bitset>
#define rr register
using namespace std;
const int N=2011; typedef long long lll;
int a[N],n; lll dp[N][2],s[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline lll min(lll a,lll b){return a<b?a:b;}
inline signed Abs(int x){return x<0?-x:x;}
signed main(){
n=iut(); for (rr int i=1;i<=n;++i) a[i]=iut();
for (rr int i=2;i<=n;++i) s[i]=s[i-1]+Abs(a[i]-a[i-1]);
dp[n-1][0]=dp[n-1][1]=Abs(a[n]-a[n-1]);
for (rr int i=n-2;i;--i){
dp[i][0]=min(dp[i+1][0]+Abs(a[i+1]-a[i]),dp[i+1][1]+Abs(a[i+2]-a[i]));
dp[i][1]=min(s[n-1]-s[i+1]+Abs(a[n-1]-a[i])+Abs(a[n]-a[i]),s[n]-s[i+1]+Abs(a[n]-a[i]));
for (rr int j=i+1;j<n-1;++j)
dp[i][1]=min(dp[i][1],min(dp[j+1][0]+Abs(a[j+1]-a[i]),dp[j+1][1]+Abs(a[j+2]-a[i]))+s[j]-s[i+1]+Abs(a[j]-a[i]));
}
return !printf("%lld",min(dp[1][0],dp[1][1]));
}

#dp#JZOJ 1281 旅行的更多相关文章

  1. dp练习(2)——老鼠的旅行

    1267 老鼠的旅行(来源:codevs) #include "bits/stdc++.h" using namespace std; ][]; ][]; int main() { ...

  2. DP 贪心【p2134】百日旅行

    Background 重要的不是去哪里,而是和你在一起.--小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场大考时默默的支持, ...

  3. codevs——1267 老鼠的旅行(棋盘DP)

    1267 老鼠的旅行 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  4. JZOJ 1667【AHOI2009】中国象棋——dp

    题目:https://jzoj.net/senior/#main/show/1667 只注重0.1.2的列有多少个,不注重它们的位置,就能记录了. #include<iostream> # ...

  5. 【NOIP2016练习】T2 旅行(树形DP,换根)

    题意:小C上周末和他可爱的同学小A一起去X湖玩. X湖景区一共有n个景点,这些景点由n-1条观光道连接着,从每个景点开始都可以通过观光道直接或间接地走到其他所有的景点.小C带着小A从1号景点开始游玩. ...

  6. [jzoj 6073] 河 解题报告 (DP)

    interlinkage: https://jzoj.net/senior/#main/show/6073 description: solution: 考虑一条河$x$被染的效果 显然对于一条河$i ...

  7. [jzoj 5661] 药香沁鼻 解题报告 (DP+dfs序)

    interlinkage: https://jzoj.net/senior/#contest/show/2703/0 description: solution: 注意到这本质就是一个背包,只是选了一 ...

  8. [JZOJ 5906] [NOIP2018模拟10.15] 传送门 解题报告(树形DP)

    题目链接: https://jzoj.net/senior/#contest/show/2528/2 题目: 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传 ...

  9. 线段树优化DP学习笔记 & JZOJ 孤独一生题解

    在 \(DP\) 的世界里 有一种题需要单调队列优化 \(DP\) 一般在此时,\(f_i\) 和它的决策集合 \(f_j\) 在转移时 \(i\) 不和 \(j\) 粘在一起(即所有的 \(j\) ...

  10. jzoj 5230 队伍统计(状压DP)

    Description 现在有n个人要排成一列,编号为1->n .但由于一些不明原因的关系,人与人之间可能存在一些矛盾关系,具体有m条矛盾关系(u,v),表示编号为u的人想要排在编号为v的人前面 ...

随机推荐

  1. 记一次 splice 导致 io.Copy 阻塞的排查过程

    记一次 splice 导致 io.Copy 阻塞的排查过程 简而言之,net.TCPConn 的 ReadFrom 零拷贝实现 splice 在 1.21.0 - 1.21.4 删除了 SPLICE_ ...

  2. Redis居然还有比RDB和AOF更强大的持久化方式?

    https://cloud.tencent.com/developer/article/1786055

  3. 【笔记】css —— BFC 原理

    一.什么是 BFC BFC 即 Block Formatting Contexts (块级格式化上下文),具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素 ...

  4. python中的泛型使用TypeVar

    引入为什么需要TypeVar PEP484的作者希望借助typing模块引入类型提示,不改动语言的其它部分.通过精巧的元编程技术,让类 支持[]运算不成问题.但是方括号内的T变量必须在某处定义,否则要 ...

  5. Linux或者Mac解压乱码问题

    1.unar : 命令行解压工具 2.安装: ubuntu等Linux安装方法:sudo apt install unar mac系统安装方法:brew install unar 现在mac电脑用 T ...

  6. 【Azure 存储服务】调用REST API获取Stroage Account Table中所有的Entity计数 -- Count

    问题描述 在Storage Account的使用中,如果想获取Table中全部Entity的计数以及大小,如果是REST API方式,如何来获取呢? 问题解答 在Azure中,所有服务的Metrics ...

  7. 【Azure 微服务】面对Service Fabric中节点状态不正常(Disabling/Warning/RemoveNode)的几种尝试解决方案

    问题描述 发现 Service Fabric 的节点状态异常,如出现 Disabling, Warning,或者 RemoveNode的情况,并且持续很长时间都没有变化(2小时以上).如何来缓解这种问 ...

  8. Ubuntu 离线安装软件包

    Ubuntu 离线安装软件包 关键词:apt-offline,Ubuntu,dpkg,.deb 本文使用的ubuntu20.04,当机器无法连接外网时,我们使用离线的方式安装软件包. 离线安装的软件包 ...

  9. 在linux上安装redis并设置权限

    redis是使用 c 开发,启动文件是二进制的看不到什么有用的信息,安装最新版本可以在https://redis.io/download 官网上查看,安装非常简单: mkdir /usr/redis, ...

  10. 常用Linux系统性能分析命令

    Linux系统提供了许多命令来分析系统性能.以下是一些常用的Linux系统性能分析命令: top:实时监视系统的运行状态和进程信息,包括CPU使用率.内存使用情况.进程状态等. 实例:直接在终端中输入 ...