0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

atcoder_水色精進記録9_ABC245e

Posted at

Atcoder水色精進記録

ABC245
E - Wrapping Chocolate
https://atcoder.jp/contests/abc245/tasks/abc245_e

アルゴリズム・データ構造

SortedList, SegmentTree, 尺取法

考察

とりあえずA,BとC,DをペアにしてA,Dをkeyにしてsortしておく
A,Cだけなら2分探索で実施できるが、B,Dはsortされていない状態

尺取法の考えでできないか?
A,Cはsortされているので、Aが入るCのindexは2分探索で求めることが出来る。
求めたindexより右側Cなら使ってOK。
二つ目のAではindexはさらに右側にずれるので、使える個数が減る。
使える個数が少ない状態から考えた方がわかりやすいので降順にsortして考える。
一つ目のAで求めたindexより左側なら使ってOK
二つ目のAではindexが右にずれる
IndexまでのDを覚えておいて、Bがギリギリ入るDを使うようにすればいける?

ギリギリ入るDはどうやって見つければ良い?
segtreeの構造でいけそう。
Segtreeでmax値を覚えておいて、有効indexの中でmax値がDを超えている小さい方に降りていくとどうなる?
使用したindexは0に書き換えを実施
→TLE..

C++ならSortedSetでいけそう。
pythonで探したらlibraryを発見

提出

感想

SegmentTreeで座標圧縮での方法を思いつくべきだった。
圧縮したidxが使用できるカウントをSegmentTreeに覚えさせておくと、下限がlogNで求めることが可能。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?