CSA #83 (Div. 2 only)

コンテスト後のreverse_iterator談義も収録しています。 Round #83 (Div. 2 only): https://csacademy.com/contest/round-83/summary/
0
前へ 1 2 ・・ 5 次へ
Hideyuki Tanaka @tanakh

CSA傾斜配点だけど、解いた人数(のみ?)によって問題のスコアが決まるシステムなの面白いな。Codeforcesとかもそんな感じな気がするけど、あれはデフォのスコアがあった気もするし

2018-07-05 02:06:59
やざてん @Yazaten

E今更わかったかもしれない。 着火点と結び目と1つ余分な頂点からなるグラフ作って、余分な頂点からの最短経路木作って、(u,v)に後退辺あったら(d[u]+d[v]+cost)/2 が解候補 みたいな感じ?

2018-07-05 02:10:00
nmnmnmnmnmnmnm @enuemuenuemuenu

Eはグラフに距離と時間の概念があって(速度は一定なので良かったが)さらにスタートがエッジの途中とかなので問題読んで即諦め。

2018-07-05 02:10:27
てんぷら @tempura_cpp

A *26or*25、*10or*9 B m*(m+1)/2から引いて足して C 大正義priority_queue D わからんって言いながらセグ木で殴ったらできた E ダイクストラで各頂点が燃える時間がわかるんだけど辺で考えなきゃいけなくてほげって感じだった

2018-07-05 02:10:33
hogeover40 @hogeover30

場合の数が本当にわからないのでAは全探索した

2018-07-05 02:10:52
やざてん @Yazaten

後退辺というか、最短経路木に含まれない辺

2018-07-05 02:10:54
nmnmnmnmnmnmnm @enuemuenuemuenu

A,B,C,Dは練習用には非常に良い問題ですね。個人的には難易度A<D<C<Bでした。

2018-07-05 02:11:34
やざてん @Yazaten

Aは全然わからなくて全探索書いたけど……

2018-07-05 02:12:16
nmnmnmnmnmnmnm @enuemuenuemuenu

Bは300000くらいまでやれば良いか・・・という発想で違う答えを書いてしまったので大きくタイムロス。

2018-07-05 02:12:47
agw @masashinakata

CSA、ABCD 4完はしたんがけど a) 30分時間浪費 b) E解けないはいかがなもんか

2018-07-05 02:14:59
Hideyuki Tanaka @tanakh

CS Academy Round #83 License Plates:同書くのが早いか悩ましいけど、36^4でやることにした。 Smallest Missing Numbers:ソートして、前から舐めて、直前の数との間の区間の和を足していく。

2018-07-05 02:15:44
Hideyuki Tanaka @tanakh

Hill Skateboarding:前から舐めて、-1なら+2、0なら-1、+1なら-2して、連続して正だった区間の長さを、負の数になったらリセット、正の数なら+1して、その最大値をとる。カッコのバランス問題的な。-1なら((, 0なら)、+1なら))的な。

2018-07-05 02:15:45
Hideyuki Tanaka @tanakh

Rectangle Fit:縦線を引くx座標を決めたら、横線は面積がA以下になる最大をとるのが最善なので、座標をx座標でソートして、順に舐めながらy座標を集合に突っ込んで、都度最高のy座標以下の数を数えれば良い。そういうことができるバランス2分木がC++にない?気がするのでFenwickTree使った

2018-07-05 02:15:45
Hideyuki Tanaka @tanakh

Firestarter:発火地点に新しいノードを作って、その枝を分割すれば、着火地点は全て頂点と考えていい。そのグラフに対してマルチ始点でダイクストラをして、全ての頂点の発火時刻のmax、それから枝の両端の発火時刻から枝だが燃え尽きる時間が求まるのでそれもmaxとる。実装が長くなって楽しかった。

2018-07-05 02:15:45
Hideyuki Tanaka @tanakh

ん、ああD問題はなんか区間和に持ち込めるのか(´・_・`)

2018-07-05 02:18:18
やざてん @Yazaten

CSA Div.2 Onlyが難易度的にわりと楽しいことがわかったので収穫とするか(他の回知らないけど)

2018-07-05 02:18:29
satanic@研究💪 @satanic0258

CSA A:s[i]==d?10:26を掛ける(前の文字と同じときはこの-1を掛ける) B:x以下の個数をにぶたんして個数がm以上かを判定するにぶたん C:現在の速度で累積和取って同じ高さのもの(ただしサンプル2みたいなのは飛ばす)のうち最大のもの (→)

2018-07-05 02:18:36
satanic@研究💪 @satanic0258

(→) D:yを固定すればxが特定できて,このyを大きいものから調べれば内包判定を楽に出来る.今内包している頂点の座標をpriority_queueで持って各yでの最大キューサイズが答え (→)

2018-07-05 02:18:54
satanic@研究💪 @satanic0258

(→) E:頂点として,元の頂点(N個),発火頂点(1個),クエリ頂点(Q個)を用意しておき,各クエリiについて発火頂点からクエリ頂点へ長さt[i]の辺を張るようにする.このグラフで発火頂点から最短経路を求めて,各辺で最後に燃える部分を(dist(u)+dist(v)+cost(u,v))/2で求めてこれらのmaxを取る

2018-07-05 02:18:58
Hideyuki Tanaka @tanakh

なんか最初の簡単すぎて残りのムズすぎて死みたいな感じじゃなくて全部そこそこな感じで良かった(´・_・`)

2018-07-05 02:19:34
satanic@研究💪 @satanic0258

E実装が長めになってしまったね

2018-07-05 02:20:26
satanic@研究💪 @satanic0258

Eの2WA,指数表記になることがあったとかいうひどいミスが

2018-07-05 02:21:21
satanic@研究💪 @satanic0258

CとEの実装ではパラメータを2倍して最後以外全部整数でやった

2018-07-05 02:22:41
前へ 1 2 ・・ 5 次へ