問題一覧 > 通常問題

No.3671 Reusable Lazy Segment Tree

レベル : / 実行時間制限 : 1ケース 6.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : (AC するまで非表示) / 解いたユーザー数 8
作問者 : harurun / テスター : 👑 みうね TKTYI
お気に入りにしたユーザー ProblemId : 13831 / 自分の提出
問題文最終更新日: 2026-08-05 16:52:41
yukicoder contest 512 BONSAI (順位表) の他の問題:

この問題のメモリ制限は通常と異なります。注意してください。/ Note the unusual memory limit.

時間制限が厳しいため、高速な言語を使用することを推奨します。

ストーリー

?? 「Memory Limitが厳しい問題はクソ問」

問題文

長さ $N$ の整数列 $A=(A_1,A_2,\ldots,A_N)$ が与えられます。 また、長さ $M$ の整数列 $l=(l_1,l_2,\ldots,l_M),r=(r_1,r_2,\ldots,r_M),x=(x_1,x_2,\ldots,x_M),L=(L_1,L_2,\ldots,L_M),R=(R_1,R_2,\ldots,R_M)$ が与えられます。

以下の $Q$ 個の小問題 $i=1,2,\ldots, Q$ を順に処理してください。小問題ごとに $A$ の値は独立であることに注意してください。

<小問題 $i$>

  • 整数 $s_i, q_i$ が与えられます。最初 $y=i$ とします。以下の $q_i$ 個のクエリ $j=1,2,\ldots,q_i$ を順に処理してください。

    <クエリ $j$>

    • $z=((s_i+j) \bmod M)+1$ とする。
    • また、$u=\min(N,\max(1,l_z\oplus y))$, $v=\min(N,\max(1,r_z\oplus y))$, $U=\min(N,\max(1,L_z\oplus y))$, $V=\min(N,\max(1,R_z\oplus y))$ とし、$l'=\min(u,v),r'=\max(u,v),L'=\min(U,V),R'=\max(U,V)$ とする。
    • $z \bmod 2=0$ のとき、 $A$ の区間 $[l',r']$ のそれぞれの値を $x_z \oplus y$ と論理和をとったもので置き換える。
    • $z \bmod 2=1$ のとき、 $A$ の区間 $[l',r']$ のそれぞれの値を $x_z \oplus y$ と論理積をとったもので置き換える。
    • $y$ を $A$ の区間 $[L',R']$ の和を $2^{30}$ で割ったあまりで置き換える。
  • 最終的な $y$ の値を出力してください。

ここで、 $X \oplus Y$ は $X$ と $Y$ の排他的論理和を表します。

入力

入力は以下の形式で標準入力から与えられます。

$N\ M$
$A_1\ A_2\ \ldots\ A_N$
$l_1\ l_2\ \ldots\ l_M$
$r_1\ r_2\ \ldots\ r_M$
$x_1\ x_2\ \ldots\ x_M$
$L_1\ L_2\ \ldots\ L_M$
$R_1\ R_2\ \ldots\ R_M$
$Q$
$\text{problem}_1$
$\text{problem}_2$
$\vdots$
$\text{problem}_Q$

$\text{problem}_i$ は $i$ 個目の小問題を表し、以下の形式で与えられます。

$s_i\ q_i$
  • $1\leq N,M,Q\leq 10^5$
  • $0\leq A_i, x_i < 2^{30}$
  • $1\leq l_i,r_i,L_i,R_i\leq N$
  • $1\leq s_i\leq M$
  • $1\leq q_i\leq 10^3$
  • $1\leq \sum_{i=1}^{Q} q_i\leq 10^6$
  • 入力はすべて整数

出力

$Q$ 行出力してください。 $i$ 行目には、小問題 $i$ の答えを出力してください。 最後に改行してください。

サンプル

サンプル1
入力
10 8
3 5 8 13 21 34 55 89 144 233
1 2 4 6 8 10 3 5
5 9 7 1 10 4 8 2
7 15 31 63 127 255 511 1023
1 3 5 7 9 2 4 6
10 8 6 4 2 9 7 1
6
1 5
3 6
5 4
8 7
2 8
6 5
出力
0
3274
1007
1023
992
127

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。