1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> #define maxn 2010 #define INF 1000000000 #define min(A,B) ((A)<(B))?(A):(B) int A[maxn], dp[2][maxn]; int cmp(const void * a, const void * b) { return ( *(int*)a-*(int*)b); } int main() { int n, k; while(scanf("%d%d",&n,&k) != EOF) { if(n==0&&k==0) break; for(int i = 1;i <= n; i++)scanf("%d",&A[i]); for(int i = 0;i <= 1; i++){ for(int j = 0;j <= n; j++){ dp[i][j]=INF; } } for(int i = 0;i < 2; i++)dp[i][0]=0; qsort(A+1,n,sizeof(int),cmp); for(int i = 2;i <= n; i++) { for(int j = k;j >= 1; j--){ int temp = dp[1][j]; dp[1][j]=min(dp[0][j-1]+(A[i-1]-A[i])*(A[i-1]-A[i]),dp[1][j]); dp[0][j]=temp; } } printf("%d\n",dp[1][k]); } return 0; }
- 1
信息
- ID
- 1496
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者