CSA #83 (Div. 2 only)
- masashinakata
- 664
- 0
- 0
- 0
A:数え上げ B:全探索(いくつの要素まででMの個数を満たすか?) C:セグメント木と2分探索 D:BIT E:読んだだけ
2018-07-05 02:22:47今日のC問、多分こどふぉとかで何回もやってて自分的には典型だと思うんだけど、脳に染み込まないのはどうしたらいいんだろう...?
2018-07-05 02:26:32CSA A: 計算でできそうだけど思いつかず、|S|^36通り全部生成する全探索 B: 1~Mの和から、ai<=Mであるようなaiの和を引いたものをansとする。あとは引いた数だけM~1以上の数を適当にansに足してあげる。
2018-07-05 02:29:49C: 地点Aから初めて地点Bで停止する移動があったとき、地点A~B間のどの地点から始めても地点Bより手前で停止するので、調べる必要のある区間はオーバーラップしない。よって前からしゃくとり風(?)にO(N)で全部試せる。
2018-07-05 02:30:11D: 長方形の縦の長さYを決めてあげると自然に横幅Xも決まる(X=floor(A/Y))。今見ている長方形に含まれる頂点達をsetに入れたり消したりすることで管理しながら、Yを1~1e6まで変化させれば最大値が求まる。
2018-07-05 02:30:45C++に詳しくないのでどなたか教えていただきたいんですが、setのrbegin()でもらったiteratorでset.erase()できないのって何故かわかりませんか? ideone.com/kL69iv
2018-07-05 02:37:45setのeraseに渡すiteratorはreverse_iteratorだとダメなんじゃないのかな…知らないけど…値で消せば消えるのでは s.erase(*s.rbegin())
2018-07-05 02:40:00@tanakh rbegin()で得られるiteratorって普通のiteratorとは違うんですね、知りませんでした。 確かに値で消せば消せました、ありがとうございます。
2018-07-05 02:43:21C++の標準ライブラリで、普通に考えればできそうだけどやってないのって、C++の深遠なる闇にのみ込まれて消滅したものである可能性が巨レ存だしあんまり深く考えたくないすね…(´・_・`)
2018-07-05 02:44:37@Yazaten そうですねえ。解決したみたいで良かったです。他のコンテナとかでも違う型だったりすることが多いので注意が要りますね。
2018-07-05 02:45:31