結果

問題 No.3782 Synchronized Subsequences
コンテスト
ユーザー kidodesu
提出日時 2026-11-05 17:14:51
言語 PyPy3
(8.0.1 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
TLE  
実行時間 -
コード長 1,031 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 94 ms
コンパイル使用メモリ 64,208 KB
実行使用メモリ 82,492 KB
最終ジャッジ日時 2026-11-05 17:15:02
合計ジャッジ時間 10,521 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 20 TLE * 1 -- * 19
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def main():
    n = int(input())
    P = list(map(lambda x: int(x)-1, input().split()))
    Q = list(map(lambda x: int(x)-1, input().split()))
    dp = [1] *n*n
    dp0 = [0] *n*n
    dp1 = [0] *n*n
    for pi in range(n):
        for qi in range(n):
            a = dp[pi*n+qi]
            x, y = dp0[pi*n+qi], dp1[pi*n+qi]
            for pj in range(pi+1, n):
                if P[pi] > P[pj]:
                    dp0[pj*n+qi] = max(dp0[pj*n+qi], a)
                else:
                    dp1[pj*n+qi] = max(dp1[pj*n+qi], a)
            for qj in range(qi+1, n):
                if Q[qi] > Q[qj]:
                    dp[pi*n+qj] = max(dp[pi*n+qj], x+1)
                else:
                    dp[pi*n+qj] = max(dp[pi*n+qj], y+1)
    if 0:
        for i in range(n):
            print(dp[i*n: i*n+n])
        print()
        for i in range(n):
            print(dp0[i*n: i*n+n])
        print()
        for i in range(n):
            print(dp1[i*n: i*n+n])
    return max(dp)

for _ in range(int(input())):
    print(main())
0