【题目描述】

有N块编号为1~N的特殊磁石相互吸附组成一条磁性链,只有它们紧挨着时才会传递吸力,他们之间的吸力很大,如果我们要从N块相连的磁石中取出一块,那么需要消耗N-1个单位的能量,空缺处不再有吸力传递,空出的位置也不会再被吸到一起。现在我们要取出Q块磁石,并且给出它们的编号,问最少要消耗多少单位的能量?

【输入格式】

第一行两个数N和Q,Q表示要取走的磁石数;

第二行Q个数,表示要取走哪些编号的磁石。

【输出格式】

仅一行,表示最少消耗的能量。

分析

一道典型的DP问题,用f(i,j)来表示从i个磁石到第j个磁石所能得到的最小能量和。

用shu[j]-shu[i]-2来表示,从i到j磁石间的距离(当然,你需要排序)。

这样,很容易得到递推方程:

f(i,j)=min{f(i,j),f(i,k-1)+f(k+1,j)+shu[j+1]-shu[i-1]-2}

 #include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
const int maxn=;
const int maxq=;
const int INF=*;
using namespace std;
int f[maxn][maxn],shu[maxq];
int main()
{
int i,j,n,m;
//文件操作
memset(shu,,sizeof(shu));
memset(f,,sizeof(f)); scanf("%d%d",&m,&n);
for (i=;i<=n;i++) scanf("%d",&shu[i]);
sort(shu+,shu++n);
shu[n+]=m+; for (i=;i<=n;i++) f[i][i]=shu[i+]-shu[i-]-;
for (m=;m<=n;m++)
for (i=;i<=n-m+;i++)
{
int j=i+m;
f[i][j]=INF;
for (int k=i;k<=j;k++)
f[i][j]=min(f[i][j],f[i][k-]+f[k+][j]+shu[j+]-shu[i-]-);
}
printf("%d",f[][n]);
return ;
}

【cogs858】磁性链的更多相关文章

  1. OI总结(垃圾排版就忽略了吧)

    学OI一年了,到现在联赛所需要的知识已经基本学完了.现在,有必要回过头来,总结总结自己一年来学到的知识以及得到的经验教训. 基础 语言基础 C++的语言基础啥的就略了吧. 算法复杂度分析 O:复杂度的 ...

  2. JS核心系列:浅谈原型对象和原型链

    在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...

  3. 简单粗暴地理解js原型链--js面向对象编程

    原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...

  4. Js 原型和原型链

    Js中通过原型和原型链实现了继承 Js对象属性的访问,首先会查找自身是否拥有这个属性 如果查到,则返回属性值,如果找不到,就会遍历原型链,一层一层的查找,如果找到就会返回属性值 直到遍历完Object ...

  5. 23种设计模式--责任链模式-Chain of Responsibility Pattern

    一.责任链模式的介绍 责任链模式用简单点的话来说,将责任一步一步传下去,这就是责任,想到这个我们可以相当击鼓传花,这个是为了方便记忆,另外就是我们在项目中经常用到的审批流程等这一类的场景时我们就可以考 ...

  6. JavaScript动画-磁性吸附

    ▓▓▓▓▓▓ 大致介绍 磁性吸附是以模拟拖拽为基础添加一个拖拽时范围的限定而来的一个效果,如果对模拟拖拽有疑问的同学请移步模拟拖拽. 源代码.效果:点这里 ▓▓▓▓▓▓ 范围限定(可视区) 先来看一个 ...

  7. JavaScript之职责链模式

    一.概述 职责链模式(Chain of responsibility),就是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有 ...

  8. Discuz论坛黑链清理教程

    本人亲测有效,原创文章哦~~~ 论坛黑链非常的麻烦,如果你的论坛有黑链,那么对不起,百度收录了你的黑链,不会自动删除,需要你手动去清理. 什么是黑链 黑链,顾名思义,就是一些赌博网站的外链,这些黑链相 ...

  9. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

随机推荐

  1. HDU-4272 LianLianKan

    http://acm.hdu.edu.cn/showproblem.php?pid=4272 据说是状态压缩,+dfs什么什么的,可我这样也过了,什么算法都是浮云 ,暴力才是王道.我也归类为状态压缩, ...

  2. 获取css的属性值

    # -*- coding:utf-8 -*- """ 在元素上执行双击操作 """ from selenium import webdriv ...

  3. SQL Server 2005/2008 触发器的管理和查看

    1.通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项.通过“ ...

  4. Linux学习笔记3——Linux中常用系统管理命令

    stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname显示系统信息 top 显示当前系统中耗费资源最多的进程 ps 显示瞬间的进 ...

  5. Unity3d HDR和Bloom效果(高动态范围图像和泛光)

    文章开始先放两组效果,文章结尾再放两组效果本文测试场景资源来自浅墨大神,shader效果为本文效果 HDR 人们有限的视觉系统,只支持16.7百万的颜色,超出这个范围的颜色就不能显示了bmp或jprg ...

  6. 支付返回post请求数据

    点击返回商家返回的post数据: {"requestBody":"singnType=&version=&businessId=00WGFKB20012& ...

  7. Using Apache2 with JBoss AS7 on Ubuntu

    大体思路同<Using Apache Web Server with Jboss AS 7>一致,但在Ubuntu上的操作与之前有些区别. 这里仍然演示mod_proxy的配置. 首先加载 ...

  8. 《Linear Algebra and Its Applications》-chaper6-正交性和最小二乘法-最小二乘问题

    最小二乘问题: 结合之前给出向量空间中的正交.子空间W.正交投影.正交分解定理.最佳逼近原理,这里就可以比较圆满的解决最小二乘问题了. 首先我们得说明一下问题本身,就是在生产实践过程中,对于巨型线性方 ...

  9. Google表格

    本博文的主要内容有  .Google表格的介绍 https://www.google.com/intl/zh-CN/sheets/about/ https://accounts.google.com/ ...

  10. win8系统添加开机自启动软件的方法(转)

    win8系统添加开机自启动软件的方法,把需要设置开机自启动的软件的快捷方式复制到下面任意路径就ok了.开机自启动路径如下:C:\ProgramData\Microsoft\Windows\Start ...