問題一覧 > 通常問題

No.2901 Logical Sum of Substring

レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 19
作問者 : 👑 hahhohahho / テスター : NoneNone Liwei CaiLiwei Cai cai_lwcai_lw
0 ProblemId : 10876 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-12-11 13:27:42

問題文

長さ$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$と等しいものがあるかを判定し、ある場合は条件を満たす連続部分列のうち最短のものの長さを出力する。

※解説ページの方にヒントを3つ置いてますので、考察に詰まった際は参考にしてください。

入力

$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もしくは右上の雲マークをクリックしてアカウントを作成してください。