博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
习题:就是干(DP)
阅读量:6530 次
发布时间:2019-06-24

本文共 981 字,大约阅读时间需要 3 分钟。

洛谷2301

题目描述

眼看着老师大军浩浩荡荡的向机房前进。LOI 的同学们决定动用自己的力量来保卫他们的好朋友loidc。现在每个人都要挑选自己的武器——两根木棍。一根用做远距离投掷,另一根用做近距离搏斗。每个人都想挑到最好的,但这是不可能的。但是为了让多数人满意,也为了减少大家的矛盾。cony设计了一个矛盾指数,这个指数就是每个人的不舒服指数和,不舒服指数就(L1-L2)^2,其中L1,L2分别是两根木棍的长度。

cony决定让矛盾指数最少,于是他来向你寻求帮助,希望你能告诉他矛盾指数至少有多少。

输入输出格式

输入格式:

第一行两个数m,n.

表示有n个人,m个木棍。

接下来m个数表示每个木棍(肯定有解)。

(m<=2000,n<=500)

输出格式:

一个数,最少的矛盾指数。

输入输出样例

输入样例#1:

5 2
3
1
4
5
8
输出样例#1:
5

分析:

先排序,显然组成一对的木棍必相邻才是最优的。

故得到方程

f[i,j]=min(f[i-1,j],f[i-2,j-1]+sqr(a[i]-a[i-1])) i=2..m

初值f[i,0]:=0;

代码:

program work;var  f:array[0..2000,0..500]of int64;  a:array[0..2000]of int64;  n,i,m,j:longint; t:int64;function min(x,y:int64):int64;begin  if x
a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end; for i:=0 to m do for j:=1 to n do f[i,j]:=maxlongint*100; f[1,0]:=0; f[0,0]:=0; for i:=2 to m do for j:=1 to min(m div 2,n) do f[i,j]:=min(f[i-1,j],f[i-2,j-1]+sqr(a[i]-a[i-1])); writeln(f[m,n]);end.
View Code

 

转载于:https://www.cnblogs.com/qtyytq/p/6059444.html

你可能感兴趣的文章
RedHat linux YUM本地制作源
查看>>
apache端口占用问题
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
几句话就能让你明白:网络地址转换(NAT)
查看>>
springboot项目自定义注解实现的多数据源切换
查看>>
特此说明
查看>>
使用flume替代原有的scribe服务
查看>>
用脚本来定制ESXI安装镜像
查看>>
微软企业级加解密解决方案MBAM架构
查看>>
没有苦劳,只有功劳!
查看>>
基于ThinkPHP写的一个简单的CMS系统
查看>>
笔记——搭建简易NFS服务
查看>>
Exchange 2010 DAG local and Site DR/Failover and Fail back
查看>>
LigerUI - 树表格的数据来自Server
查看>>
认证技术概述
查看>>
制作Windows Server 2003/08 image详细步骤与OpenStack介绍
查看>>
2016国赛小结
查看>>
Android Studio 第六十四期 - Android业务组件化之URL Scheme使用
查看>>