Submit Search
Upload
解説:ボス
•
Download as PPTX, PDF
•
1 like
•
560 views
理
理玖 川崎
Follow
技術室奥プログラミングコンテスト#2、I問題の解説です。
Read less
Read more
Software
Report
Share
Report
Share
1 of 19
Download now
Recommended
Magical
Magical
oupc
面積と積分~面積と積分がどう関連するか~
面積と積分~面積と積分がどう関連するか~
studyPresenter
平面への射影と行列
平面への射影と行列
政孝 鍋島
事務機器 2課 企画書
事務機器 2課 企画書
Tatsuya Takahashi
J - 次の仕事
J - 次の仕事
gotoloop
F - NPCの家
F - NPCの家
gotoloop
解説:貢物
解説:貢物
理玖 川崎
解説:デバッグ
解説:デバッグ
理玖 川崎
Recommended
Magical
Magical
oupc
面積と積分~面積と積分がどう関連するか~
面積と積分~面積と積分がどう関連するか~
studyPresenter
平面への射影と行列
平面への射影と行列
政孝 鍋島
事務機器 2課 企画書
事務機器 2課 企画書
Tatsuya Takahashi
J - 次の仕事
J - 次の仕事
gotoloop
F - NPCの家
F - NPCの家
gotoloop
解説:貢物
解説:貢物
理玖 川崎
解説:デバッグ
解説:デバッグ
理玖 川崎
RNNで頑張ろう
RNNで頑張ろう
理玖 川崎
カードの取り合い
カードの取り合い
理玖 川崎
石油
石油
理玖 川崎
釣り
釣り
理玖 川崎
区間和剰余クエリ
区間和剰余クエリ
理玖 川崎
ユークリッド最小全域木
ユークリッド最小全域木
理玖 川崎
解説:歩くNPCたち
解説:歩くNPCたち
理玖 川崎
解説:エンブレム
解説:エンブレム
理玖 川崎
線形識別によるパターン認識
線形識別によるパターン認識
理玖 川崎
解説:サポーター
解説:サポーター
理玖 川崎
解説:おおきな数を作った
解説:おおきな数を作った
理玖 川崎
解説:吹奏楽部
解説:吹奏楽部
理玖 川崎
WAVE_WITH_GLSL
WAVE_WITH_GLSL
理玖 川崎
More Related Content
More from 理玖 川崎
RNNで頑張ろう
RNNで頑張ろう
理玖 川崎
カードの取り合い
カードの取り合い
理玖 川崎
石油
石油
理玖 川崎
釣り
釣り
理玖 川崎
区間和剰余クエリ
区間和剰余クエリ
理玖 川崎
ユークリッド最小全域木
ユークリッド最小全域木
理玖 川崎
解説:歩くNPCたち
解説:歩くNPCたち
理玖 川崎
解説:エンブレム
解説:エンブレム
理玖 川崎
線形識別によるパターン認識
線形識別によるパターン認識
理玖 川崎
解説:サポーター
解説:サポーター
理玖 川崎
解説:おおきな数を作った
解説:おおきな数を作った
理玖 川崎
解説:吹奏楽部
解説:吹奏楽部
理玖 川崎
WAVE_WITH_GLSL
WAVE_WITH_GLSL
理玖 川崎
More from 理玖 川崎
(13)
RNNで頑張ろう
RNNで頑張ろう
カードの取り合い
カードの取り合い
石油
石油
釣り
釣り
区間和剰余クエリ
区間和剰余クエリ
ユークリッド最小全域木
ユークリッド最小全域木
解説:歩くNPCたち
解説:歩くNPCたち
解説:エンブレム
解説:エンブレム
線形識別によるパターン認識
線形識別によるパターン認識
解説:サポーター
解説:サポーター
解説:おおきな数を作った
解説:おおきな数を作った
解説:吹奏楽部
解説:吹奏楽部
WAVE_WITH_GLSL
WAVE_WITH_GLSL
解説:ボス
1.
解説:ボス 技術室奥プログラミングコンテスト#2 問題I
2.
問題概要 以下のクエリをたくさん処理してください 区間[L,R]が増えたり減ったりする 区間が与えられて、それをすっぽり覆うような区間 の中で、左端の距離と右端の距離の積の最大を求め る。
3.
考察 区間がいっぱいだとわかりづらい 区間[L,R]を、座標(L,R)にプロットすると、問題は次 のように言い換えられる。
4.
問題概要 平面上に点が増えたり減ったりする ある点が与えられるので、それよりもx座標が小さく、 y座標が大きいものの中で、その二つを対角とする長 方形の大きさの最大を求めよ
5.
考察 点が増えたり減ったりするのがやばそう そこで、 ・ステップ1 点を固定して解ける形に 問題を変形する ・ステップ2 点が固定された状態で解く という方法をとる
6.
ステップ1 答えるクエリの列を考えて、その上にSegmentTree を作ってみる。 Q Q Q
Q Q Q Q Q
7.
ステップ1 そして、すべての点に対し、存在する期間に対応す る区間にその点を突っ込む 例えば、青の期間、点Pがあるなら、赤の位置に点P を突っ込む。 Q Q Q
Q Q Q Q Q
8.
ステップ1 また、すべてのクエリについて、SegTreeを登ってい く途中の位置にそのクエリを突っ込む Q Q Q
Q Q Q Q Q
9.
ステップ1 以上の操作を行ったあと、SegmentTreeの各ノード において点が固定された問題を解き、各クエリにつ いてmaxをとると、答えが求まる。
10.
ステップ2 とりあえず、O(N)個の点とO(N)個のクエリが来ると 思って問題を解きます。
11.
ステップ2 自明な観察として、点がいっぱいあっても、左上の 階段を作る点以外無視していい。
12.
ステップ2 2点の場合について考えてみると、その2点の間を 通るある直線を境に、Aの側にあるものはAと作る長 方形の方が大きく、逆もまた然り。 A B
13.
ステップ2 3つ以上ある場合も同様に、領域ごとに、最大とな る点が分かれている。 点が所属する領域を高速に求めたい。 A B C
14.
ステップ2 x軸の小さい方から平面走査していけば、二分探索で、 どの領域に含まれるかわかる おしまい・・・・・・????????????? A B C
15.
ステップ2 おしまいじゃない 線の交差を考える必要がある A B C
16.
ステップ2 線の交点よりx座標が大きいところでは、点Bはない ものとして扱ってよい。 そこで、線が交差したタイミングで、Bを消去し、 AとCの間の新しい線を伸ばす。 A B C
17.
ステップ2 線の交点をすべて列挙すると最悪N^2かかる 実は、隣り合う線だけでできる交点のみ保持してい ればいい なぜなら、たとえば左のような赤い二つの離れた線 を考えると、その間から生えてくる線との交点が 先にあるから。
18.
ステップ2 交点追加のタイミングは、点の追加、削除の時だが、 どちらもO(N)回、よって管理する交点もO(N)個 この交点イベントと、本来のクエリイベントを、x座 標の小さい順に処理していけばいい ソートや二分探索でlogがついて、O(NlogN)
19.
まとめ ステップ1で点とクエリの数がlogN倍になったこと を踏まえると、全体でO(Nlog^2N)で解ける おしまい
Download now