結果

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

ソースコード

diff #
raw source code

from atcoder.segtree import SegTree
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()))
    st0 = SegTree(lambda a, b: max(a, b), 0, [0]*n*n)
    st1 = SegTree(lambda a, b: max(a, b), 0, [0]*n*n)
    dp = [1] *n*n
    dp0 = [0] *n*n
    dp1 = [0] *n*n
    for pi in range(n):
        st0_ = SegTree(lambda a, b: max(a, b), 0, [0]*n)
        st1_ = SegTree(lambda a, b: max(a, b), 0, [0]*n)
        for qi in range(n):
            p, q = P[pi], Q[qi]
            dp[pi*n+qi] = max(st0.prod(qi*n+p, qi*n+n), st1.prod(qi*n, qi*n+p))+1
            a = dp[pi*n+qi]
            st0_.set(q, a)
            st1_.set(q, a)
            x, y = st0_.prod(q+1, n), st1_.prod(0, q)
            #print(p, q, x, y, a, "here", *[st1_.get(i) for i in range(n)])
            st0.set(qi*n+p, x)
            st1.set(qi*n+p, y)
    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