ll【ybt动态规划】筷子
This commit is contained in:
parent
840982aeee
commit
b4de50b5d1
|
@ -1,4 +1,3 @@
|
||||||
#include <algorithm>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
int main()
|
int main()
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# 标题
|
||||||
|
|
||||||
|
* 内容
|
|
@ -0,0 +1,21 @@
|
||||||
|
# 【ybt动态规划】筷子
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
【问题描述】
|
||||||
|
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,否则输出长度差平方和的最小值。
|
||||||
|
【输入样例】
|
||||||
|
10 1
|
||||||
|
1 1 2 3 3 3 4 6 10 20
|
||||||
|
【输出样例】
|
||||||
|
5
|
||||||
|
说明:
|
||||||
|
第一双 1 1
|
||||||
|
第二双 2 3
|
||||||
|
第三双 3 3
|
||||||
|
第四双 4 6
|
||||||
|
(1-1)^2+(2-3)^2+(3-3)^2+(4-6)^2=5
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include<iostream>
|
||||||
|
#include<algorithm>
|
||||||
|
using namespace std;
|
||||||
|
int main(){
|
||||||
|
int kuaiz,ke,ren=3,a[101];
|
||||||
|
cin>>kuaiz>>ke;
|
||||||
|
for(int i=1;i<=kuaiz;i++){
|
||||||
|
cin>>a[i];;
|
||||||
|
}
|
||||||
|
ren+=ke;
|
||||||
|
if(ren*2>kuaiz){
|
||||||
|
cout<<"-1";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
sort(a+1,a+kuaiz+1);
|
||||||
|
int f[101][51]={0};
|
||||||
|
bool pan[101][51]={0};
|
||||||
|
for(int i=2;i<=kuaiz;i++){
|
||||||
|
for(int j=1;j<=ren;j++){
|
||||||
|
if(f[i-1][j]==0&&pan[i-1][j]==0){
|
||||||
|
f[i][j]=f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]);
|
||||||
|
pan[i][j]=1;
|
||||||
|
}else{
|
||||||
|
f[i][j]= min (f[i-1][j],f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));
|
||||||
|
pan[i][j]=1;
|
||||||
|
}
|
||||||
|
//cout<<i<<" "<<j<<" "<<f[i][j]<<endl;
|
||||||
|
if(j==i/2){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout<<f[kuaiz][ren];
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,2 @@
|
||||||
|
10 1
|
||||||
|
1 1 2 3 3 3 4 6 10 20
|
|
@ -0,0 +1,2 @@
|
||||||
|
10 2
|
||||||
|
1 1 2 3 3 3 4 6 10 20
|
|
@ -0,0 +1,4 @@
|
||||||
|
30 7
|
||||||
|
1 1 2 3 3 3 4 6 10 20
|
||||||
|
1 1 2 3 3 3 4 6 10 20
|
||||||
|
1 1 2 3 3 3 4 6 10 20
|
|
@ -0,0 +1,18 @@
|
||||||
|
## z:\Chao\src\ll1882_chopsticks\test\in.txt
|
||||||
|
2020/04/24 ÖÜÎå 16:56:52.53
|
||||||
|
5
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 150 ms with return value 0
|
||||||
|
|
||||||
|
## z:\Chao\src\ll1882_chopsticks\test\in2.txt
|
||||||
|
2020/04/24 ÖÜÎå 16:56:52.53
|
||||||
|
-1
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 80 ms with return value 0
|
||||||
|
|
||||||
|
## z:\Chao\src\ll1882_chopsticks\test\in3.txt
|
||||||
|
2020/04/24 ÖÜÎå 16:56:52.53
|
||||||
|
0
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 70 ms with return value 0
|
||||||
|
|
Loading…
Reference in New Issue