【DP】筷子
来源:互联网 发布:mac os 10.13 版本下载 编辑:程序博客网 时间:2024/04/29 02:02
筷子
源程序名 CHOP.??? (PAS,C,CPP)
可执行文件名 CHOP.EXE
输入文件名 CHOP.IN
输出文件名 CHOP.OUT
A先生有很多双筷子。确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的。这天,A先生家里来了K个客人,A先生留下他们吃晚饭。加上A先生,A夫人和他们的孩子小A,共K+3个人。每人需要用一双筷子。A先生只好清理了一下筷子,共N根,长度为T1,T2,T3,……,TN.现在他想用这些筷子组合成K+3双,使每双的筷子长度差的平方和最小。(怎么不是和最小??这要去问A先生了,呵呵)
输入
输入文件共有两行,第一行为两个用空格隔开的整数,表示N,K(1≤N≤100, 0<K<50),第二行共有N个用空格隔开的整数,为Ti.每个整数为1~50之间的数。
输出
输出文件仅一行。如果凑不齐K+3双,输出-1,否则输出长度差平方和的最小值。
样例
CHOP.IN
10 1
1 1 2 3 3 3 4 6 10 20
CHOP.OUT
5
说明
第一双 1 1
第二双 2 3
第三双 3 3
第四双 4 6
(1-1)^2+(2-3)^2+(3-3)^2+(4-6)^2=5
============================
=======================================
var n,k:longint; a:array[1..100]of longint; f:array[0..100,0..100]of longint;procedure init;begin assign(input,'chop.in'); assign(output,'chop.out'); reset(input); rewrite(output);end;procedure terminate;begin close(input); close(output); halt;end;procedure qsort(s,t:longint);var i,j:longint; x:longint; tem:longint;begin i:=s; j:=t; x:=a[(s+t)shr 1]; repeat while x<a[j] do dec(j); while a[i]<x do inc(i); if i<=j then begin tem:=a[i]; a[i]:=a[j]; a[j]:=tem; inc(i); dec(j); end; until i>j; if i<t then qsort(i,t); if s<j then qsort(s,j);end;function min(a,b:longint):longint;begin if a>b then exit(b); exit(a);end;procedure main;var i,j:longint;begin readln(n,k); k:=k+3; //注意 if n<2*k then begin writeln(-1); terminate; end; for i:=1 to n do read(a[i]); qsort(1,n); k:=k*2; fillchar(f,sizeof(f),$7); f[0,0]:=0; for i:=2 to n do for j:=2 to min(k,i) do if j and 1=0 then //如果是偶数则.... begin f[i,j]:=f[i-2,j]; //若不用第i-1个则直接传递... if f[i-1,j]<f[i,j] then f[i,j]:=f[i-1,j]; //若不用第i个则直接传递..... f[i,j]:=min(f[i,j],f[i-2,j-2]+(a[i]-a[i-1])*(a[i]-a[i-1])); end; writeln(f[n,k]);end;begin init; main; terminate;end.
- 【DP】筷子
- njupt 1581 筷子 DP
- 筷子 - NJUPT 1851 dp
- [DP]筷子1/2
- UVA 10271 Chopsticks 筷子 DP
- 筷子
- 筷子
- 筷子
- 筷子
- 筷子
- 筷子
- uva 10271 筷子(分组dp)
- hdoj Chopsticks 1500 (DP)筷子配对
- 筷子 、森林
- 筷子问题
- 使用筷子礼仪
- 老男孩 - 筷子兄弟
- 肖央---筷子兄弟
- ddd
- 负载均衡技术全攻略(大全)
- 再看DXUT框架
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- 存储的基本概念-HUB与LUN
- 【DP】筷子
- discuz X2数据字典
- shopex引入淘宝数据保留规格的方法
- jquery easyui 刷新 tab
- vs2008 输出文件
- UITableView 基本使用方法总结
- 学习c++感受与心得
- java零碎东西的实例
- php截取字符串,兼容utf8、gb2312,gbk、big5