Educational Codeforces Round 166 所感

数理科学基礎の試験に,無事,打ちのめされました(途中で退出する輩は何なんですかね,煽りか?). 都合が合いましたので,エデュフォをやりました.

https://codeforces.com/contest/1976/codeforces.com

A

charからintにキャストできるやつだっけ.普通に実装に時間をかけてしまった.こどふぉあるあるの「サイトが重い」にも遭遇.

B

なんか編集距離みたいなやつ.でもやることは簡単.

実装は省略.かつとまたは間違えて一ミス,オーバーフロー考慮忘れで2ミスしちゃった.もったいない.

変な通知来たし.

C

変な問題.ただ,各人に対して到着しなかった場合を考えるから,この問題の趣旨としては計算量をどう減らすかにあると思う.

最初スキルを最大化させるのかと誤読してそういうのを作ってしまった.問題は普通に着順だったので,特に,2スキルの値が等しい人間,それからちょうど枠の境目の人間に気をつけて実装する.一つの判定をだいたい O(1)くらいに抑えなきゃいけない.と考えていたら終わってしまった.

D, E, F

眠かった,Windows×C++という久しぶりの環境につかれてしまったので,撤退した.仮にやってても時間内には解けなかっただろうし.

総評

・睡眠が一番大事 ・なれない環境でやらない・

ABC352 所感

身の回りのことが落ち着いてきましたので,少しづつ再開していきます. 今日はリハビリも兼ねてのんびりと参加してみました.

atcoder.jp

A

 N は無視して, min(X - Y) \le Z \land max(X - Y) \ge Z を確認.

B

ループを回して確認した.

C

肩までの高さを先に足し上げてから,一つずつ「頭までの高さ - 肩までの高さ」を考えていく処理をした.

D

priority_queue を 4 つ用意して,ゴリ押した.添え字を逆に取った.

Submission #53126940 - AtCoder Beginner Contest 352

E

最小全域木の問題.入力で一旦 2 頂点同士の重み付き経路をすべて最小のものに揃えたあと,おそらくクラスカル法を使うのだと思う.学んでいない上,コンテストの残り時間がごくわずかだったため,諦めた.

F

うーん,思いつかない.行列を使うのかな?

G

確率論の問題ですか? 数学ですか?

総評

リハビリにしてはまあまあできたかもしれません.やっぱり解けた時の快感はとんでもないものがあるので,気軽に続けていこうと思います.茶コーダーですが.

Integer Cards

atcoder.jp

upsolve のや難問は単品で記事書きます

これは毎回愚直にクエリを実行していると最悪の場合O(N2)より不可能

例 1 1 1 ... 1 1 1 と105の1に105の2, 105の3、みたいなクエリが出た時

なので、これを合成する

一番でかい数に変えられるのをたくさんした方が良いのだから、Cでsort

Irreversible operation

atcoder.jp

タイトルの和訳は不可逆的な操作です

インドとかだとタイトルがアルゴリズムの名を冠していることもしばしばあるので、割とタイトルって重要だと思います

よく現代文でも言うじゃないですか、「まず最初に引用元と作者を見ろ」って

それはさておき一次元オセロです

やりたいことは任意の位置において BW -> WB です

つまり W がどんどん左に移動していくと考えます

見つけたら swap みたいな感じで線形探索していくことも可能とは思いますが、これは O(N) でできそうだなと邪推します

まあ簡単に言えば累積和です

左から見て行って B の数を記録し、 W が見つかったらansにそれを足します

答えは64bitで

atcoder.jp

/\/\/\/

atcoder.jp

まず最初勘違いしていましたが、奇数<偶数である必要はないんですよね

ですから、mapなどを用い

奇数の列で1, 2番目に多い a1, a2と

偶数のそれ b1, b2 を用意して基本a1とb1

a1==b1だったとき、max(a2, b2)をa1またはb1の代わりに用いればよいです

ただし、コーナーケースとして、a2, b2が存在しないときはn/2を出力します

またa2が存在しない場合はb2を、b2が存在しない場合はa2を用います

atcoder.jp