結果
問題 |
No.3131 Twin Slide Puzzles
|
ユーザー |
👑 ![]() |
提出日時 | 2025-04-25 22:58:32 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,510 bytes |
コンパイル時間 | 565 ms |
コンパイル使用メモリ | 82,668 KB |
実行使用メモリ | 295,860 KB |
最終ジャッジ日時 | 2025-04-25 22:59:24 |
合計ジャッジ時間 | 34,233 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 10 WA * 22 TLE * 1 -- * 24 |
ソースコード
""" https://yukicoder.me/problems/no/3131 互換の回数の偶奇を見ればいい 同じものの構築は… 適当に作るとヒットするのでは? """ import sys import random def printans(P): ans = [[None] * N for i in range(N)] for X in range(N*N): xi,xj = X//N,X%N ans[xi][xj] = P[X] for i in range(N): print (*ans[i]) N = int(input()) A = [ list(map(int,input().split())) for i in range(N) ] P = [i for i in range(N*N)] dic = {} S = 0 S2 = 0 for i in range(N): for j in range(N): S += A[i][j] * P[i*N+j] dic[S] = (0,S2) move = [] zero = 0 for loop in range(2 * (10**6)): X = random.randint(1,N*N-1) Y = random.randint(1,N*N-1) xi,xj = X//N,X%N yi,yj = Y//N,Y%N S2 -= (P[X]*A[xi][xj])**2 + (P[Y]*A[yi][yj])**2 S -= P[X]*A[xi][xj] + P[Y]*A[yi][yj] P[X],P[Y] = P[Y],P[X] S += P[X]*A[xi][xj] + P[Y]*A[yi][yj] S2 += (P[X]*A[xi][xj])**2 + (P[Y]*A[yi][yj])**2 move.append( (X,Y) ) if P[X] == 0: zero = (xi+xj)%2 if P[Y] == 0: zero = (yi+yj)%2 # print (P,S) if loop % 2 == 0: if S in dic: if dic[S][1] == S2: pass else: print ("Yes") ansA = printans(P) while len(move) > dic[S][0]: x,y = move.pop() P[x],P[y] = P[y],P[x] ansB = printans(P) sys.exit() dic[S] = (loop,S2) print ("No")