結果
問題 | No.5013 セクスタプル (open) |
ユーザー | tails |
提出日時 | 2022-12-29 16:03:52 |
言語 | cLay (20241019-1) |
結果 |
AC
|
実行時間 | 1,962 ms / 2,000 ms |
コード長 | 1,437 bytes |
コンパイル時間 | 2,205 ms |
実行使用メモリ | 6,952 KB |
スコア | 16,941 |
最終ジャッジ日時 | 2022-12-29 16:07:18 |
合計ジャッジ時間 | 205,538 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge15 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 100 |
ソースコード
static int f_row(int y,int p[6],int d[36][6]){ int z=0; int v[6]{}; int n[6]{}; rep(x,6){ int i=p[y*6+x]; rep(k,6){ int c=d[i][k]; v[c]|=1<<x; n[c]+=1; } } rep(c,6){ if(v[c]==63){ z+=n[c]-3; } } return z; } static int f_col(int x,int p[6],int d[36][6]){ int z=0; int v[6]{}; int n[6]{}; rep(y,6){ int i=p[y*6+x]; rep(k,6){ int c=d[i][k]; v[c]|=1<<y; n[c]+=1; } } rep(c,6){ if(v[c]==63){ z+=n[c]-3; } } return z; } { Timer timer; timer.set(); Rand r; int@--d[36][6]; int p[36]; int s=0; int s_row[6],s_col[6]; rep(i,36)p[i]=i; rep(i,6)s+=s_row[i]=f_row(i,p,d); rep(i,6)s+=s_col[i]=f_col(i,p,d); int best_p[36]; int best_s=-1; double a; while(a=timer.get()/1.96,a<1.0){ double t=100.*pow(1./100.,a); int i=r.get(36); int j=r.get(36); if(i!=j){ swap(p[i],p[j]); int sir=f_row(i/6,p,d); int sic=f_col(i%6,p,d); int sjr=0; int sjc=0; int e=sir+sic-s_row[i/6]-s_col[i%6]; if(i/6!=j/6){ sjr=f_row(j/6,p,d); e+=sjr-s_row[j/6]; } if(i%6!=j%6){ sjc=f_col(j%6,p,d); e+=sjc-s_col[j%6]; } if(r.get(0.,1.)<exp(e/t)){ s_row[j/6]=sjr; s_row[i/6]=sir; s_col[j%6]=sjc; s_col[i%6]=sic; s+=e; if(s>best_s){ best_s=s; rep(i,36)best_p[i]=p[i]; } }else{ swap(p[i],p[j]); } } } { int o[36]; rep(i,36){ o[p[i]]=i; } rep(i,36){ wt(o[i]/6+1,o[i]%6+1); } } }