結果
問題 |
No.3131 Twin Slide Puzzles
|
ユーザー |
👑 ![]() |
提出日時 | 2025-04-25 23:08:26 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,531 bytes |
コンパイル時間 | 409 ms |
コンパイル使用メモリ | 82,404 KB |
実行使用メモリ | 287,140 KB |
最終ジャッジ日時 | 2025-04-25 23:09:07 |
合計ジャッジ時間 | 36,271 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 14 WA * 18 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(1,2 * (10**6)): X = random.randint(0,N*N-1) Y = random.randint(0,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,loop%2,zero) if loop % 2 == zero: 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")