题目描述

某特种部队接到一个任务,需要潜入一个仓库。该部队士兵分为两路,第一路士兵已经在正面

牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库。

当他们到达仓库时候,发现这个仓库的锁是一把很诡异的电子锁,上面是一排按钮,每个按钮

上都有一个数字……10 秒钟后,总部返回了该锁的技术信息。要解开这把锁,首先要从左边的第

一个按钮开始向右按动,中间可以跳过某些按钮,按动到最右边的按钮后,反向向左按动。最终,

每个按钮都要按且仅按一次。每两个相邻按钮上数字之差的总和的最小值,便是解开这把锁的密码。

作为一支装备精良的特种部队,必须要在最短的时间内完成任务,解开这把锁,潜入仓库。

输入格式

第一行是一个n(2 <= n <= 1000)表示共有n 个按钮。

第二行是n 个正整数,代表从左至右各按钮上的数字,数值均不超过2000。

输出格式

只有一个数,为这把锁的密码。

f[i][j]表示向右按到i,向左按到j的最优解

设k=max(i,j)+1,则 点k 可以更新到i,到j的最优解

 #include <cstdlib>
#include <cstring>
#include <cstdio> #define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
const int N();
int n,num[N],dis[N][N],f[N][N]; int Presist()
{
scanf("%d",&n);
for(int i=; i<=n; ++i)
scanf("%d",num+i);
for(int i=; i<=n; ++i)
for(int j=; j<=n; ++j)
dis[i][j]=abs(num[i]-num[j]);
memset(f,,sizeof(f)); f[][]=;
for(int k,i=; i<=n; ++i)
for(int j=; j<=n; ++j)
{
k=max(i,j)+;
f[i][k]=min(f[i][k],f[i][j]+dis[j][k]);
f[k][j]=min(f[k][j],f[i][j]+dis[k][i]);
}
int ans=0x3f3f3f3f;
for(int i=; i<=n; ++i)
{
ans=min(ans,f[i][n]+dis[i][n]);
ans=min(ans,f[n][i]+dis[n][i]);
}
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(){;}

RONOJ——PID204 / 特种部队 ☆的更多相关文章

  1. PID204特种部队

    特种部队   题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达 ...

  2. PID204 / 特种部队

    /* 双向DP 两条路 f[i][j] 表示第一条路末位置为i 第二条路末位置为j 的最优解 转移:对于下一个点 k=max(i,j)+1 可以更新 路1的末位置 也可以更新路2的末位置 f[i][k ...

  3. 「 RQNOJ PID204 」 特种部队

    解题思路 看了一下题解,感觉题解貌似有些错误.所以把我的见解放在这里,希望路过的大佬可以帮忙解释一下 QAQ 就是这里的更新 $dp[i-1][i]$ 和 $dp[i][i-1]$ 的时候,之前博主说 ...

  4. Codevs 1427 特种部队(双路DP)

    1427 特种部队 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一 ...

  5. 特种部队(codevs 1427)

    题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达仓库时候,发现 ...

  6. 特种部队(codevs 1427)

    题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达仓库时候,发现 ...

  7. [CODEVS6333] (数据加强)特种部队

    题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达仓库时候,发现 ...

  8. RONOJ 6今明的预算方案(有依赖的背包)

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  9. RQNOJ #204 特种部队 sol

    link 首先我们可以注意到一个非常无聊的性质.先一直向右边走,然后折返回来向左边走,本质上与先向右走,然后向左走,再向右走这样循环走完整个路程是一致的. 根据这个性质,我们可以将向左走与向右走两个东 ...

随机推荐

  1. B1789 Y型项链 贪心

    想明白之后就是一道大水题,就是两两把最长公共前缀求出来,然后直接取最长的,然后就直接暴力算就行了... 题干: Description 欢乐岛上众多新奇的游乐项目让小可可他们玩的非常开心.现在他们正在 ...

  2. python使用MySQLdb向mySQL批量插入数据的方法

    该功能通过调用mySQLdb python库中的 cursor.executemany()函数完成批量处理. 今天用这个函数完成了批量插入 例程: def test_insertDB(options) ...

  3. 3.3 文件I/O

    错误的解决方法请参考:http://liangruijun.blog.51cto.com/3061169/673776 3.3.2 访问手机中的存储文件夹 3.3.3 读取assets中的文件 pac ...

  4. 第13课 SmartGit程序操作介绍

    http://www.syntevo.com/

  5. 【WIP】Rails devise导入与使用方法

    创建: 2017/09/07 更新: 2017/10/14 标题加上[WIP]     源代码: https://github.com/plataformatec/devise  命令行内容总结  安 ...

  6. Python 34(进程了解)

    一:僵尸进程与孤儿进程 测试程序: 基本概念: 一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中. ...

  7. Grafana+Zabbix+Prometheus 监控系统

    环境说明 软件 版本 操作系统 IP地址 Grafana 5.4.3-1 Centos7.5 192.168.18.231 Prometheus 2.6.1 Centos7.5 192.168.18. ...

  8. BZOJ 3727 DP?推式子..

    思路: 设$sum[i]表示i的子树中a[i]的和$ $b[1]=\Sigma a[i]*dis[i] = \Sigma _{i=2} ^n sum[i]$ $b[x]-b[fa[x]]=sum[1] ...

  9. vs2008 启动IE浏览器 出现DW20.exe占用大量cpu 服务器iis 异常调试

    DW20.exe占用大量cpu 服务器iis运行出现异常想查一下故障原因,发现有好几个DW20.exe进程,每个占用20%左右的cpu,在任务管理器中将其终止后,它又自动运行起来了 查了一下DW20. ...

  10. Python3编写自动签到服务程序

    公司加班的餐补需要登录网站签到领取,有时候会忘记,于是自己用Python写了小程序来自动签到.刚开始只是做了自己用,直接写的黑框程序,后来给同事用,就打包成exe.再后来有人说要写成window服务会 ...