方法一:模拟退火
思路:用DP
跑出固定分组的解,与模拟退火模板结合即可。产生新解需要随机交换数组a
中的两个数据,可以随机生成两个不同的下标。
#include <bits/stdc++.h>
using namespace std;
#define re register//加速
#define sqr(x) ((x)*(x))//简化代码
const double MAX_TIME = 0.8;//可取0.7~0.8
const double T0 = 2000;//初始温度
const double Tk = 1e-6;//终止温度
const double delta = 0.993;//降温系数
int n, m;
int a[30], s[30];
double ans;
double dp[30][30];
double DP() {
//DP确定每组多少个数据
memset