1
1

0.はじめに

 最近下降気味の成績を挽回するべく参加。
 結果はC問題すら解けない惨憺たる成績。
 C問題も振り返ればそこまで難解ではなく
 レートは-38で737と茶色安定のこの頃です。

1.A - Buy a Pen

 A問題ながらちょっとひねった問題。
 といっても、素直に言われた通りの実装すれば
 迷うことはありませんでした。
 Cで指定される色以外の2色の値段のうちminで小さい方を
 出力して終了として、ACでした。

 https://atcoder.jp/contests/abc362/submissions/55513491

2.B - Right Triangle

 後から解説をみたら、三平方の定理を使って直角を求める方法が
 紹介されていましたが、コンテスト時は思いつきませんでした。
 
 昔使った(ググって拾って来た)、3点の角度を求める方法で
 角A~Cの角度を求めていずれかが90°だったらYes
 そうでなければNoを出力して終了としました。

 https://atcoder.jp/contests/abc362/submissions/55530776

3.C - Sum = 0

 最初に建てた解答方針が間違っていたため、1時間たっても
 解けず惨敗しました。
 
 【間違った考え方】
  1.整数の組を以下の3つに分ける
   L)Lが0より大きい
   R)Rが0より小さい
   M)LとRの間に0が含まれる
  2.Xを作成する際、LはL[i]、RはR[i]を選択する場合が
   0に近づくので、その場合の合計値を
   Mの値で調整する
  https://atcoder.jp/contests/abc362/submissions/55566280
 
 コンテスト時は上記考えで行けると思い込んで四苦八苦していましたが
 今思えば以下のようなケースであっさりだめになりました。
 2
 -2 -1
 2 3

 コンテスト時に気づけばよかったのですが嵌っているときは
 そううまくいかず、時間切れ。
 解説をよんだらもっと単純な方法で解決できました。
 【考え方】
  1.LとRをリストLisに格納しつつ、LとRをLSとRSに集計
  2.LSが0より大きいまたは、RSが0より小さい場合は条件を満たすXは作れないのでNo
   それ以外はYesを出力
  3.LS(XにすべてLを採用した場合のXの合計値)をもとにiを0~N-1の間以下の処理をしていく
   →X(以下の処理ではリストans)の合計が0となるまでXにR[i]を格納していく
   -1.LSが0の(もうXにR[i]を格納必要がない)時、ansにL[i]を格納
   -2.LS+(R[i]-L[i])が0より小さい時(XのL[i]をR[i]に変えてもXの合計が0にならない時)
     ansにR[i]を格納し、LSにR-Lを加算
   -3.LS+(R[i]-L[i])が0より多くなる時(XのL[i]をR[i]を変えたらXの合計が0以上になる時)
     ansにL[i]+LS*-1を格納し、LSに0をセット
  4.ansを出力して終了
  

 https://atcoder.jp/contests/abc362/submissions/55589741

以上

1
1
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
1
1