問題一覧 > 通常問題

No.2697 Range LIS Query

レベル : / 実行時間制限 : 1ケース 10.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 64
作問者 : nouka28nouka28 / テスター : KowerKoint2010KowerKoint2010 hibit_athibit_at 👑 seekworserseekworser iseeisee
2 ProblemId : 10622 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-03-21 21:50:55

ストーリー

悪の医者である hibit 君は、彼の野望のために最長増加部分列について勉強しています。
しばらくして hibit 君は以下の問題に出会いましたが、もう夜遅かったので明日のバーチャルコンテスト「あさかつ」に備えて寝ることにしました。
hibit 君のライバルであるあなたはその問題を hibit 君が起きる前に解こうと思いました。

問題文

$1$ 以上 $4$ 以下の整数からなる長さ $N$ の数列 $A=(A_1,A_2,\dots ,A_n)$ が与えられます。

$Q$ 個のクエリが与えられるので、順番に処理してください。クエリは次の $2$ 種類です。

  • 1 l r : $A$ の連続部分列 $B=(A_l,A_{l+1},\dots ,A_r)$ について $B$ の最長広義単調増加部分列の長さを出力する。
  • 2 l r x : $l\leq i \leq r$ を満たす整数 $i$ について $A_i$ を $x$ に更新する。

注釈

  • 列 $X$ の部分列 : $X$ の要素をいくつか抜き出して元の順序に並べてできる列
  • 列 $X$ の連続部分列 : $X$ のある連続する区間のみを取り出し順番を保ったもの
  • 列 $X$ の最長広義単調増加部分列 : $X$ の広義単調増加な部分列の中で列の長さが最大であるもの

制約

  • 入力はすべて整数
  • $1\leq N\leq 10^5$
  • $1\leq A_i\leq 4$
  • $1\leq Q\leq 10^5$
  • $1$ , $2$ 種類目のクエリについて $1\leq l\leq r\leq N$
  • $2$ 種類目のクエリについて $1\leq x\leq 4$

入力

入力は以下の形式で標準入力から与えられる。
$N$
$A_1\ A_2\  \dots \ A_N$
$Q$
$query_1$
$query_2$
$\vdots$
$query_Q$

各クエリ $query_i\, (1\leq i\leq Q)$ は

$1$ $l$ $r$

または、

$2$ $l$ $r$ $x$

の形で与えられる。

出力

$1$ 種類目のクエリの数を $q$ として $q$ 行出力してください。 $i(1\leq i\leq q)$ 行目には $i$ 個目の $1$ 種類目のクエリに対する出力を出力してください。

サンプル

サンプル1
入力
7
1 2 4 3 2 1 3
3
1 1 7
2 2 4 1
1 3 6
出力
4
3

最初 $A=(1,2,4,3,2,1,3)$ です。クエリを順に処理すると次のようになります。

  • $B=(1,2,4,3,2,1,3)$ です。 $B$ の最長広義単調増加部分列の $1$ つとして $(1,2,2,3)$ があり、この長さは $4$ なので、 $4$ を出力します。
  • $A_2,A_3,A_4$ をすべて $1$ に更新します。よって $A=(1,1,1,1,2,1,3)$ となります。
  • $B=(1,1,2,1)$ です。 $B$ の最長広義単調増加部分列の $1$ つとして $(1,1,2)$ があり、この長さは $3$ なので、 $3$ を出力します。
サンプル2
入力
4
4 3 2 1
1
1 1 4
出力
1

サンプル3
入力
17
2 1 3 3 2 3 3 3 4 2 3 2 2 2 1 4 1
15
2 5 17 1
1 8 10
1 11 13
2 2 8 2
2 6 17 2
1 11 17
2 13 17 4
1 9 13
2 6 6 4
2 1 16 4
1 2 5
2 16 16 1
2 3 6 2
1 3 6
1 2 2
出力
3
3
7
5
4
4
1

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