题目大意:给出N个数,要求你分成M个集合,使得每个集合的(最大值 - 最小值)^2的和达到最小
解题思路:先排个序
用dp[i][j]表示前几个数字分成i个集合的最小和
则dp[i][j] = dp[i - 1][k] + w[k + 1][j]
w[k + 1][j]表示[k + 1, j]这个集合的(最大值-最小值) ^ 2
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
const int M = 5010;
const int INF = 0x3f3f3f3f;
int val[N];
int dp[M][N], s[M][N];
int n, m, c