博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu3936 Coloring(模拟退火)
阅读量:4619 次
发布时间:2019-06-09

本文共 1607 字,大约阅读时间需要 5 分钟。

  裸退火,每次交换两个格子即可。依旧不会调参,稍微抄了点参数并且把随机种子设成了一个神奇的数字终于过掉了

#include
#include
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define N 22#define M 55#define T0 1#define T1 1E-14#define delta 0.9999char getc(){ char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}int gcd(int n,int m){ return m==0?n:gcd(m,n%m);}int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}int n,m,c,a[M],color[N][N],cnt,ans,goal[N][N];int wx[4]={ 1,0,0,-1},wy[4]={ 0,1,-1,0};int calc(int x,int y){ int t=0; for (int k=0;k<4;k++) if (x+wx[k]>=1&&x+wx[k]<=n&&y+wy[k]>=1&&y+wy[k]<=m) if (color[x][y]!=color[x+wx[k]][y+wy[k]]) t++; return t;}void anneal(){ double T=T0; while (T>T1) { int x1=rand()%n+1,y1=rand()%m+1,x2=rand()%n+1,y2=rand()%m+1; while (x1==x2||y1==y2) x1=rand()%n+1,y1=rand()%m+1,x2=rand()%n+1,y2=rand()%m+1; int d=0; d-=calc(x1,y1),d-=calc(x2,y2); swap(color[x1][y1],color[x2][y2]); d+=calc(x1,y1),d+=calc(x2,y2); if (d<0||rand()
m) x++,y=1; } for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) for (int k=0;k<4;k++) if (i+wx[k]>=1&&i+wx[k]<=n&&j+wy[k]>=1&&j+wy[k]<=m) if (color[i][j]!=color[i+wx[k]][j+wy[k]]) cnt++; ans=cnt>>=1; memcpy(goal,color,sizeof(color)); for (int i=1;i<=20;i++) anneal(); for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) cout<
<<' '; cout<

 

转载于:https://www.cnblogs.com/Gloid/p/9940811.html

你可能感兴趣的文章
Phonegap移动开发:布局总结(一) 全局
查看>>
Java 变参函数的实现
查看>>
nrf51 SDK自带例程的解读
查看>>
SESSION技术
查看>>
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
PHP中获取当前页面的完整URL
查看>>
所谓输入掩码技术,即只有数字键起作用
查看>>
Display对象,Displayable对象
查看>>