sataniC++スマートフォン用の表示で見るsataniC++C++、競プロ、数学などについて色々考えたりします。この広告は、90日以上更新していないブログに表示しています。中で最小値(あるいは最大値)を取るような直線の値を求める」(以下、最小値クエリ)という2つのクエリを効率的に行うことが出来ます。Trickを用いることで効率的に値を求めることが出来ます。文章を補って読んでください)。クエリまず、それぞれのクエリを見ていきます。追加した状態(右)へと遷移している様子を表しています。(なお、グラフの描画にはGrapesというソフトを用いています。いうことも分かります。直線を追加する前とは値が異なっていることが分かります。速くクエリをこなす方法があるため、それについて考えていきます。性質もう一度先ほどの図をよく見てみると、2つの性質が隠れていることが分かります。よって、最小値を取る直線は左から順に傾きが減少している事がわかりました。直線の取る値は、その値を直線の傾き順に並べると下に凸となる文章にすると少しわかりにくいですが、図にすると次のような感じです。ときについて考えています。ときの直線の取る値を縦軸とすると、次のようになります。おいて直線の取る値をそのまま図にすると、図右のようになります。どのようにとっても直線集合の中で最小値を取ることがありません。したがって、この緑色の直線を直線集合から取り除くことによって、図右の青色の折れ線のように下に凸となります。故に、不必要な直線を取り除いてしまえば、直線の取る値は傾き順に並べると下に凸となります。