- できるだけ毎週土曜日更新.次回更新は2月16日.
- ネタ切れ深刻なので記事リクエスト募集中.twitterないしはコメント欄まで.
- 貼っているコードはあんまり検証していないので,信頼性はアレです.アレ.
- twitter: @tmaehara フォローはお気軽に.
2012-09-09
次回予告
次回は次の問題に答えるテクニックを紹介します.興味のある人は考えてみてください.ネタバレ禁止とかは特に無いので,解答を思いついた方は是非トラックバックでも飛ばしてください(=宣伝活動).
ちなみに:問題1は多くの人が解けると思います.事前知識なしで問題2を思いついた方は自慢できます.1・2は実装量はたいしたことはありません.
問題1(簡単)
n 個の数が与えられる.クエリとして
- get(i): i 番目の数を返す
- addRange(i, j, x): i~j 番目の数に x を足す
がたくさん飛んでくるので,答えよ.
問題2(普通)
n 個の数が与えられる.クエリとして
- get(i): i 番目の数を返す
- addRange(i, j, x): i~j 番目の数に x を足す
- minRange(i, j): i~j 番目の数の中で最小の値を返す
がたくさん飛んでくるので,答えよ.
問題3(難)
n 個の数が与えられる.クエリとして
- get(i): i 番目の数を返す
- addRange(i, j, x): i~j 番目の数に x を足す
- minRange(i, j): i~j 番目の数の中で最小の値を返す
- insert(i, x): i 番目に新たに数 x を挿入する
- remove(i): i 番目の数を削除する
がたくさん飛んでくるので,答えよ.
- 50 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 20 http://t.co/QREzvvPi
- 19 http://t.co/PmgRGHMA
- 9 http://hootsuite.com/dashboard
- 3 http://longurl.org
- 2 http://t.co/gmcRT91
- 1 http://t.co/PjynOzFz
- 1 http://www.google.com/reader/i/?dc=gorganic&source=mog&hl=ja
- 1 https://topcoder-g-hatena-ne-jp.jag-icpc.org/diarylist
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&cad=rja&ved=0CDsQFjAD&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/spaghetti_source/20120909/1347116499&ei=qmtNUN-XCu6OmQWLz4HACg&usg=AFQjCNFY2LtRkQ3VInu8ajVFK42JkAdFcg&sig2=3sC7jz8tTLwtO59ogQvqhw
iwiwi 2012/09/10 10:29 http://poj.org/problem?id=3580 これに含まれていると思いますし,同様に普通の平衡二分探索木でできると思います.もしもっとマニアックなデータ構造じゃないと出来ない問題にしたいなら,もっと変なクエリが必要だと思います.
spaghetti_source 2012/09/10 13:50 既出だとは思っていましたが,まさかそのままより一般の問題があるとは思っていませんでした.
想定は普通の平衡二分探索木で,回転時に適切な更新を要するアレでしたが,addを遅延評価するのが主流みたいで,確かにそのほうが実装容易ですね.ぐぬぬ.