ABC143 大反省会場

s
どうしてこうなった・・・

s

そもそも色々知らなかった所があるので、まずはそこから

nC2, 2重Forループで出来るってマジ?

インデックスをうまいことやればnC2の組み合わせが出来るそうです。

例えば [0,1,2]から二つの組み合わせを取る場合、

の3通りです。

これをC++の2重Forループでやってみましょう。

これが実行結果

マジじゃん・・・2個選ぶ時は2重For。この記事を書き残すことによってしっかり覚えましたし・・・

閑話休題。

A問題

ザックリ解説。

  1. A > B2 で判定、そもそもカーテンの隠せる範囲の方が大きいなら0 それ以外ならAからB2を引く
  2. 出力

B問題

N個のたこ焼きから二個選んだ組み合わせについてごにょっとやる問題です。
NC2でループを回して、二つの値の掛け算した結果を足していけばよいです。

C問題

左から一文字ずつ見ていって、切り替わるタイミングでcountを増やしていけばよいです。
前の文字は別途どっかの変数に保存しておくこと。

D問題

二本選んで前処理でループしといた棒の長さについて二分探索。

ここでその二本は三角形の中で最も長さの長い二本と設定するのが肝(この思考ができなくてつらい)

ずっとこんな感じのコード

https://atcoder.jp/contests/abc143/submissions/8052366

出していたのですがWAの原因が分からず・・・

友人のtunehiraさんに「助けて」ってLINEを送りコードを見ていただいたところ、さっと解決してくれました。本当にありがとうございます。

それはそうとこれが正解コード

そもそもREPのiの方が常に低い(=b, swapいらねぇ)のと、後なぜか僕がbと同じ長さのcは選べないと錯覚してしまったのが原因。

考察が甘かった・・・

求め方が分かっても実装に起こせないとかなり悔しい・・・NKT....

参考

長く悩んでいたソースコードが文字化けしてしまう問題の解決方法が載っていました!本当にありがとうございます。
https://office-obata.com/report/memorandum/post-1852/