您的位置:首页 > 其它

BUN16 51640 dp

2016-06-10 23:03 267 查看
bunoj

%Q

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1000+100 ;
long long a[maxn] ;
long long dp[1000][1000] ;
int main()
{
int t , n , m ;
scanf("%d",&t) ;
while(t--){
cin >> n >> m ;
for(int i = 1 ;i <= n ; ++i){
cin >> a[i] ;
}
sort(a+1,a+n+1) ;
// for(int i = 0 ;i <= n ;++i){
// cout << a[i] << " " ;
// }
for(int i = 0 ;i <= m ; ++i){
for(int j = 0 ; j<= n ; ++j){
i >= j ? dp[i][j] = 0 : dp[i][j] = 1100000000000 ;
// cout << dp[i][j] << " " ;
}
}
for(int i = 1 ; i <= m ; ++i){
for(int j = 1 ;j <= n ; ++j){
for(int k = 0 ; k < j; ++k){
long long tmp = (a[j]-a[j-k])*(a[j]-a[j-k]) ;
dp[i][j] = min(dp[i][j] , dp[i-1][j-k-1]+tmp) ;
// cout<< "i j " << i << " " << j << " " << dp[i][j]<< " " <<endl; ;
}
// cout << dp[i][j] << " " ;
// cout << endl;
}
//// cout << endl;
}
printf("%lld\n",dp[m]
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: