問題一覧 > 通常問題

No.2697 Range LIS Query

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

ストーリー

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

問題文

11 以上 44 以下の整数からなる長さ NN の数列 A=(A1,A2,,An)A=(A_1,A_2,\dots ,A_n) が与えられます。

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

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

注釈

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

制約

  • 入力はすべて整数
  • 1N1051\leq N\leq 10^5
  • 1Ai41\leq A_i\leq 4
  • 1Q1051\leq Q\leq 10^5
  • 11 , 22 種類目のクエリについて 1lrN1\leq l\leq r\leq N
  • 22 種類目のクエリについて 1x41\leq x\leq 4

入力

入力は以下の形式で標準入力から与えられる。
NN
A1 A2  ANA_1\ A_2\  \dots \ A_N
QQ
query1query_1
query2query_2
\vdots
queryQquery_Q

各クエリ queryi(1iQ)query_i\, (1\leq i\leq Q)

11 ll rr

または、

22 ll rr xx

の形で与えられる。

出力

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

サンプル

サンプル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)A=(1,2,4,3,2,1,3) です。クエリを順に処理すると次のようになります。

  • B=(1,2,4,3,2,1,3)B=(1,2,4,3,2,1,3) です。 BB の最長広義単調増加部分列の 11 つとして (1,2,2,3)(1,2,2,3) があり、この長さは 44 なので、 44 を出力します。
  • A2,A3,A4A_2,A_3,A_4 をすべて 11 に更新します。よって A=(1,1,1,1,2,1,3)A=(1,1,1,1,2,1,3) となります。
  • B=(1,1,2,1)B=(1,1,2,1) です。 BB の最長広義単調増加部分列の 11 つとして (1,1,2)(1,1,2) があり、この長さは 33 なので、 33 を出力します。
サンプル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もしくは右上の雲マークをクリックしてアカウントを作成してください。