No.2901 Logical Sum of Substring
レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 19
作問者 : 👑 hahho / テスター : None Liwei Cai cai_lw
タグ : / 解いたユーザー数 19
作問者 : 👑 hahho / テスター : None Liwei Cai cai_lw
問題文最終更新日: 2024-08-22 15:26:27
問題文
長さ$N$の整数列$A$が与えられます。クエリが$Q$個与えられるので、順に処理してください。
クエリは以下の2種類です。
1 i v
: $A_i$を$v$で置き換える。2 l r
: $[A_l,\ A_{l+1},\ldots,\ A_r]$の連続部分列で論理和(ビット単位OR)が$2^K-1$と等しいものがあるかを判定し、ある場合は条件を満たす連続部分列のうち最短のものの長さを出力する。
入力
$N \enspace K$ $A_1 \enspace A_2\ \ldots\ A_N$ $Q$ $\text{query}_1$ $\text{query}_2$ $\vdots$ $\text{query}_Q$
- $1 \leq N \leq 2 \times 10^5$
- $1 \leq K \leq 16$
- $1 \leq Q \leq 10^4$
- 全ての$v \in A$は、$0 \leq v < 2^K$を満たす
- 全てのクエリ1は、$1 \leq i \leq N$、$0 \leq v < 2^K$を満たす
- 全てのクエリ2は、$1 \leq l \leq r \leq N$を満たす
- 入力は全て整数である
出力
クエリ2に対して、もし条件を満たす連続部分列がある場合は最短のものの長さを、ない場合は-1
を各行に出力してください。
サンプル
サンプル1
入力
3 2 1 2 3 4 2 1 2 2 1 3 1 2 1 2 1 2
出力
2 1 -1
わかりやすくするために、二進数で表記します。まず初めに、$A=[01, 10, 11]$です。
1番目のクエリでは、$01$と$10$の論理和は$11$なので連続部分列$[01, 10]$は条件を満たします。一方で$[01]$と$[10]$は条件を満たしません。よって長さ2
を出力します。
2番目のクエリでは、連続部分列$[11]$が条件を満たすので、長さ1
を出力します。
3番目のクエリでは、$A$の2番目の要素を$1$で置き換えます。これにより、$A=[01, 01, 11]$です。
4番目のクエリでは、$[01, 01]$のいかなる連続部分列も条件を満たさないので、-1
を出力します。
サンプル2
入力
6 4 14 12 15 12 13 11 10 2 1 2 1 3 4 1 2 6 1 5 5 2 4 6 1 5 15 1 3 3 2 1 5 1 3 11 2 2 4
出力
-1 2 1 2
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。