2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

0.はじめに

 ARCとメールを読み違えて日曜開催と勘違いしてしまって
 ABCに参加できなかった今日この頃。
 とりあえずバーチャル参加をしてみました。
 A~C問題までは順調に正答しましたが、Dはとても無理な気がし
 Eをやってみましたが結局分からず終了。
 
 レート変動はありませんでしたが、順位的には2840位相当の
 成績でした。ちゃんと参加できていれば・・・。
 

1. A - Permute to Maximize

 3つの数字で大きい数字を作る問題。
 数字を文字としてリストで読み込み、降順ソートし
 くっつけて出力して終了。

 https://atcoder.jp/contests/abc432/submissions/71008501

2.B - Permute to Minimize

 A問題の発展問題?
 まぁB問題なので、効率気にせず回答。
 インプットをリストに入れ、小さい順にソート。
 先頭の文字が0以外ならそのままくっつけて出力。
 0だったら、0以外の文字で最小の数字を調べ
 その文字を先頭にもってきてリストをくっつけて出力して終了。

 https://atcoder.jp/contests/abc432/submissions/71008667

3.C - Candy Tribulation

 大きい飴を最大化ということなので、それを軸に考察。
 【考え方】
  ・重さが同じで、総個数を変える事を考えると、大きい飴を小さい飴に変えることで
   その重さの差分で調整することとなる。
  ・大きい飴をMAXにするためには、一番個数が少ない人の飴をすべて大きな飴にし
   個数昇順で、個数の差分を元に大きい飴を小さい飴に変更して調整していく。

 【実装】
  1.N,X,YおよびリストAを入力
  2.Aを昇順ソート
  3.変数MinS(ある人が持つ飴総数の最小値)にA[0]をセット
  4.変数W(各人の持つ飴の重さ合計)にMinS×Y(すべて大きい飴を渡す)をセット
  5.変数YS(大きい飴の総数)にMinSをセット
  6.変数sa(飴の重さの差)にX-Yをセット
  (ここまでで飴総数最小の人の初期処理終了)
  7.以下、iを1~N-1まで変更し、飴総数最小から2人目~N人目を処理
   1.S(i番目の人の飴総数)にA[i]をセット
   2.pre(前計算変数)にWからS*Yを引いた値をセット
   3.preをsaで割り切れる、かつ、preをsaでわった値がS以下(S以上となると渡す数をオーバーする)の時
    1.x(小さい飴を渡す数)にpre÷saをセット
    2.YSにS-xをセット
   4.3の条件を満たさない時は-1を出力して終了
  8.YSを出力して終了
 
 考え方に問題が無かったようで、上記実装でACとなりました。

 https://atcoder.jp/contests/abc432/submissions/71010012

以上

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?