求调参
  • 板块P3936 Coloring
  • 楼主Ahler
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/15 14:24
  • 上次更新2025/7/30 18:53:47
查看原帖
求调参
1772213
Ahler楼主2025/7/15 14:24

目前最高96,求调到稳定98+

#include<bits/stdc++.h>
#define cen cout << endl
#define c1 cout << 1 << " "
#define cs cout << " ";
using namespace std;
double Rand1(double a,double b){static mt19937 t(random_device{}());uniform_real_distribution<double> f(a,b);return f(t);}
int Rand2(int a,int b){static mt19937 t(random_device{}());uniform_int_distribution<int> f(a,b);return f(t);}
bool use(int a,int b,double t){return (1.0*exp(a-b))/t<(Rand1(0.0,1.0));}
long long    times=2025*114514;
const double time_second=3.5;
const double temp_end=1e-5;
const double temp_begin=1e3;
const double temp=0.9999955;
int n,m,c;
int map1[39][39],tmap[39][39];
int p[29];
int ff(){
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<m;j++){
			if(tmap[i][j]!=tmap[i][j+1]){
				ans++;
			}
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<n;j++){
			if(tmap[j][i]!=tmap[j-1][i]){
				ans++;
			}
		}
	}
	return ans;
}
void py(bool flag){//1:t=1,0:1=t
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			tmap[i][j]=(flag?map1[i][j]:tmap[i][j]);
			map1[i][j]=(flag?map1[i][j]:tmap[i][j]);
		}
	}
}
int main(){
	cin >> n >> m >> c;
	for(int i=1;i<=c;i++){
		cin >> p[i];
	}
	int k=1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			while(!p[k]) k++;
			map1[i][j]=tmap[i][j]=k;
			p[k]--;
		}
	}
	int ans=ff();
	
	
	while((clock()/(1.0*CLOCKS_PER_SEC))<time_second&&times--){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				tmap[i][j]=map1[i][j];
			}
		}
		for(double i=temp_begin;i>=temp_end;i*=temp){
			int x1=Rand2(1,n),x2=Rand2(1,n),y1=Rand2(1,m),y2=Rand2(1,m);
			swap(tmap[x1][y1],tmap[x2][y2]);
			int tans=ff();
			if(tans<ans){
				ans=tans;
				py(0);
			}
			else if(!use(tans,ans,i)){
				swap(tmap[x1][y1],tmap[x2][y2]);
			}
			else{
				py(0);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout << map1[i][j];
			cs;
		}
		cen;
	}
	return 0;
}
/*

5 7 6
12 5 7 5 3 3

*/
2025/7/15 14:24
加载中...