Dp Hdu 1421 침실 옮 기기

1098 단어 HDU
제목: http://acm.hdu.edu.cn/showproblem.php?pid=1421
인접 한 쌍 마다 취하 거나 취하 지 않 는 다.
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <algorithm>

#include <cmath>

#include <stack>

#include <queue>

#include <vector>

#include <map>

#include <string>

#include <iostream>

using namespace std;

const int INF=0xfffffff;

int Min(int a,int b)

{

	return a>b?b:a;

}

int a[2222];

int dp[2222][1111];

int main()

{

	int n,k;

	while(scanf("%d%d",&n,&k)!=EOF){

		for(int i=1;i<=n;i++)

			scanf("%d",&a[i]);

		sort(a+1,a+1+n);

		for(int i=1;i<=n;i++)

			for(int j=1;j<=k;j++)

			dp[i][j]=INF;

		for(int i=0;i<=n;i++)

			dp[i][0]=0;

		for(int i=1;i<=n;i++){

			for(int j=0;j<=i/2;j++){

				dp[i][j]=Min(dp[i-1][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));

			}

		}

		printf("%d
",dp[n][k]); } return 0; }

좋은 웹페이지 즐겨찾기