0
0

0.はじめに

 珍しく一日外出しており、疲労困憊で参加。
そのせいか、相性が悪かったのか、C以降が解けず
ひさびさの2問のみの正解。
 とはいえ、みんな芳しくなかったのか、レートは-12で済みました。

1.A - Buildings

 問題文はややこしめでしたが、実装すると楽な感じでした。
一つ目のビルより高いビルがあるかを
2つ目以降順にみていきあったらその位置を出力して終了
なかったら-1を出力して終了。
で、AC頂きました。

 https://atcoder.jp/contests/abc353/submissions/53321164

2.B - AtCoder Amusement Park

 日常によくありそうなシチュエーションだったため考えやすかったです。
【実装】
 ・スタートカウント変数Sを0で初期化
・現在の座席の空きNKをKで初期化
・以下A[i](リストを先頭から一つずつ読み込む数)を順に処理
 -A[i]がNK以下の場合(まだゴンドラに乗れる)
 -NKからA[i]をマイナス
 -A[i]がNKより大きい場合(もうゴンドラに乗れない)
 -Sに1加算
 -NKにK-A[i]をセット
・最後にS+1を出力して終了
 (繰り返しの最後のゴンドラにだれか乗っているので)

 https://atcoder.jp/contests/abc353/submissions/53330684

3.C - Sigma Problem

 コンテスト中は正解できませんでしたが、解き方の方向性は
あってたようです。実装がうまくいかずに限界を感じました・・・。
解説の解答例を見て、出力方法が合点行きました。

【実装】
 1.変数ansに余りを取らなかったときの合計をセット
 -ans=(N-1)×sum(A)
 2.Aを昇順ソート
 3.余りが発生する組み合わせ変数Mに0をセット
 4.各数毎の余りが発生する限界位置変数mにNをセット
 5.mod用変数pに10の8乗をセット
 6.以下iを0~N-2まで繰り返し
 -1.mにmとi+1の大きい方をセット
 -2.以下m-1がiより大きいかつA[m-1]+A[i]がp以上の間
 -1.mから1マイナスする。
 (mを大きい方からずらしていき、A[i]と足した場合にpを超える
 =mod計算が必要な位置の最大 を探る)
 -3.MにN-Mを加算
 7.ansからp×Mを減算した値を出力して終了

 https://atcoder.jp/contests/abc353/submissions/53394600

4.D - Another Sigma Problem

 Cが難しかったのでいったん見たけど、同じような難しさと思い
Cに戻りました。
 解説を読んで、こちらの問題は最終的な合計のmodを取ればよい事が
わかり、これは解けたかもな・・・と思いました。

【考え方】
 ・リストの一番後ろの数をA[N-1]とすると、
 A[N-1]を含む関数fの合計は以下となる
 A[0]×(10のlen(str(A[N-1])))乗~A[N-2]×(10のlen(str(A[N-1])))の
 合計
上記を、A[N-1]~A[1]まで求めて合計し最後に998244353でmodを取って
出力する

解説の楽な実装が同じようなイメージ化と思います。

 https://atcoder.jp/contests/abc353/submissions/53396195

以上

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