解题思路

看了一下题解,感觉题解貌似有些错误。所以把我的见解放在这里,希望路过的大佬可以帮忙解释一下 QAQ

就是这里的更新 $dp[i-1][i]$ 和 $dp[i][i-1]$ 的时候,之前博主说的是 $dp[i][j]$ 表示第一条路走到了i第二条路走到了 $j$,并且 $i>j$,且 $1\rightarrow i$上的点都走过了。

那它更新的时候难道不是向下面这样吗

希望大佬能够帮忙解释一下。蟹蟹蟹蟹٩('ω')و

-------------分割线-------------

既然是从起点跑到终点再从终点跑回来。那么就可以将其看作是从终点到出发点 (或者从出发点到终点都一样) 两条完全不重合路径。

设 $dp[i][j]$ 表示第一条路径 (A) 走到了第 $i$ 个点上,第二条路径 (B) 走到了第 $j$ 个点上,并且 $1\rightarrow i$ 这段上和 $1\rightarrow j$ 的所有点都被走过。

那么就会出现下面两种情况 (跳一格还是跳若干格),这两种情况下又有两种情况 (A 跳还是 B 跳)

  • 当前跳的这一步只是跳了一个格子

    • A 上一步在 B 上一步后面 (远) 那么直接就是 A 通过跳一步到达了 $i$,而 B 保持在原地不动。$dp[i][j] = \min \{ dp[i][j],dp[i-1][j]+|dist[i]-dist[j]| \}$
    • A 上一步在 B 上一步前面 (近) 那么就是 B 通过跳一步到达了 $i$,而 A 保持原地不动。$dp[j][i] = \min \{ dp[j][i], dp[j][i-1]+|dist[i]-dist[j]| \}$
  • 当前跳的这一步越过了若干格子
    • A 上一步在 B 之前好多个格子,那么 A 直接跳到 $i$,B 保持原地不动。$dp[i][i-1] = \min \{ dp[i][i-1],dp[j][i-1] + |dist[i]-dist[j]| \}$
    • A 上一步在 B 之后好多个格子,那么 B 直接跳到 $i$,A 保持原地不动。$dp[i-1][i] = \min \{ dp[i-1][i],dp[i-1][j] + |dist[i]-dist[j]| \}$

附上代码

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn = ;
int n, a[maxn], dp[maxn][maxn], Ans = ;
inline int abs(int x) {
return x > ? x : -x;
}
int main() {
scanf("%d", &n);
for(int i=n; i>=; i--)
scanf("%d", &a[i]);
memset(dp, 0x7f, sizeof(dp));
dp[][] = , dp[][] = dp[][] = abs(a[]-a[]);
for(int i=; i<=n; i++) {
for(int j=; j<i-; j++) {
dp[i][j] = min(dp[i][j], dp[i-][j] + abs(a[i] - a[i-]));
dp[j][i] = min(dp[j][i], dp[j][i-] + abs(a[i] - a[i-]));
dp[i][i-] = min(dp[i][i-], dp[j][i-] + abs(a[i] - a[j]));
dp[i-][i] = min(dp[i-][i], dp[i-][j] + abs(a[i] - a[j]));
}
}
for(int i=; i<=n; i++)
Ans = min(Ans, dp[i][n]);
printf("%d", Ans);
}

「 RQNOJ PID204 」 特种部队的更多相关文章

  1. 前端构建工具之gulp(一)「图片压缩」

    前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...

  2. fir.im Weekly - 如何打造 Github 「爆款」开源项目

    最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...

  3. 更新日志 - fir.im「高级统计」功能上线

    距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...

  4. Notepad++ 开启「切分窗口」同时检视、比对两份文件

    Notepad++ 是个相当好用的免费纯文本编辑器,除了内建的功能相当多之外,也支持外挂模块的方式扩充各方面的应用.以前我都用 UltraEdit 跟 Emeditor,后来都改用免费的 Notepa ...

  5. 「zigbee - 1」工欲善其事必先利其器 - IAR for 8051 IDE customization

    最近在实验室做一些 Zigbee 相关的事情,然而一直没在博客上记录啥东西,也不像原来在公司有动力在 Confluence wiki 上扯东扯西.直到前些阵子,跑到 feibit 论坛上(国内较大的一 ...

  6. 「C语言」文件的概念与简单数据流的读写函数

    写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...

  7. 「C语言」Windows+EclipseCDT下的C语言开发环境准备

    之前写过一篇 「C语言」在Windows平台搭建C语言开发环境的多种方式 ,讨论了如何在Windows下用DEV C++.EclipseCDT.VisualStudio.Sublime Test.Cl ...

  8. 如何对抗 WhatsApp「蓝色双勾」-- 3 个方法让你偷偷看讯息

    WhatsApp 强制推出新功能「蓝色双勾 (✔✔)」 ,让对方知道你已经看过讯息.一众用户反应极大,因为以后不能再藉口说未看到讯息而不回覆.究竟以后 WhatsApp 是否真的「更难用」? 幸好还有 ...

  9. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...

随机推荐

  1. FFmpeg解码视频帧为jpg图片保存到本地

    FFmpeg解码视频帧为jpg图片保存到本地 - CSDN博客 https://blog.csdn.net/qq_28284547/article/details/78151635

  2. [DevExpress]DevExpress的安装与使用

    一.下载安装文件 依据自己的须要选择不同的版本号.下面为15.1 安装时选择自己须要的模块进行安装,之后进行激活,购买授权或者"其它方式". 二.安装完 在VSIDE工具栏会添加下 ...

  3. scapy基础-网络数据包结构

    网络层次模型,数据包的组成是学习scapy的基础,下文主要关注模型中各个层次的用途,ethernet II和ip包数据结构.    1.五层模型简介 名称 作用 包含协议 应用层 面向程序对程序的传输 ...

  4. Same origin policy

    Chrome: Origin null is not allowed by Access-Control-Allow-Origin 的问题 发送 http request 时遇到 error: Ori ...

  5. P2622 关灯问题II(状压bfs)

    P2622 关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j] ...

  6. 慕课网6-4 编程练习:jQuery选择器中的过滤器

    6-4 编程练习 结合所学的jQuery过滤器知识,实现如下图所示的隔行换色效果 任务 使用jQuery的.css()方法设置样式,语法css('属性 '属性值') 使用:odd和:even过滤器实现 ...

  7. [C陷阱和缺陷] 第3章 语义“陷阱”

    第3章 语义"陷阱"     一个句子哪怕其中的每个单词都拼写正确,而且语法也无懈可击,仍然可能有歧义或者并非书写者希望表达的意思.程序也有可能表面上是一个意思,而实际上的意思却相 ...

  8. 类函数:string、math

    类:系统内置的处理字符串类型的函数方法类. string是String的快捷方式.所包含的内容都是一样的. Int i=x.length;//获取一个字符串长度 字符串中,索引号从0开始 String ...

  9. Docker (1) 基本概念和安装

    Docker简介 什么是容器? 一种虚拟化的方案,操作系统级别的虚拟化.容器是一个轻量的.独立的.可执行的包,包含了执行它所需要的所有东西:代码.运行环境.系统工具.系统库.设置.很长一段时间中,容器 ...

  10. (2)HTML元素与属性(已入垃圾框)

    HTML元素 开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag) HTML 文档由嵌套的 HTML 元素构成 以上实例包含了七个 HTML 元素 &l ...