0
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.はじめに

 C++切替計画に無理があるかなと気づき始めた今日この頃。
 とりあえずA、BをC++で回答するもC辺りの複雑さだと
 Pythonで書きたくなり切替。
(値渡しか参考渡しかみたいなエラーが出て断念)
 Cは何とか解き、Dに取り掛かるもTLEとなり時間も足らず終了。

 先週同様3問しか解けなかったのでレートは-20の766と
 茶色が板についてきました。

 C++切替は一旦やめて(言語差で不正解になる以前に問題が解けていない・・)
 Pythonに戻します・・・。
 D,E辺りの復習もして4完を目指して地道にやっていきます。

1. A - Armor

 急に簡単な問題。
 Aとdを入力してDがA以上ならYes、そうでなければNoを
 出力して終了。
 そういいつつ、最初if文の判断を取り違えていたのは内緒。

 https://atcoder.jp/contests/abc461/submissions/76435937

2.B - The Honest Woodcutters

 数列の位置と値の比較問題。
 C++のvecterになれていないから入力にてこずりましたが
 まぁ、その後は、iの値とB[A[i]]が一致するかを見る
 簡単なお仕事。
 indexを+1とか-1しないと上手くいかないので微調整して
 提出してAC。

 https://atcoder.jp/contests/abc461/submissions/76443169

3.C - Variety

 急にややこしい問題。
 最初、Mを全種類数かと思い込み実装したら
 実際は選ぶ種類数だったと気づきてこずりました。

 【実装】
  1.NKMの入力
  2.優先度付きキューq(N個の宝石の(価値*-1,色)のtupleを格納)
   価値をマイナスにしているのは高い順に並べるため
  3.既に選んだ色を格納するセットSを定義
  4.CとVを読み込みqに格納
  5.回答用変数ansを0で定義
  6.選ぶ石の数の残り変数stoneをKで定義
  7.選ばないと行けない種類数の残り用変数cntをMで定義
  8.以下stoneが1以上の間繰り返し
   -1.qから先頭のtupleを取りだし、変数v、cに格納
   -2.cnt=stoneの時
   (選ばないといけない種類数と選べる石数の残りが同じとき=既に選んだ種類の石を選べない時)
    -1.cがSに無ければ以下の処理
    -2.stoneから1減算
    -3.Sにcを追加
    -4.ansからvを減算(最初にvにマイナスを掛けているので)
    -5.cntから1を減算
   -3.cntが0の時(M種類の石を選び終えている時)
    -1.ansからvを減算
    -2.stoneから1を減算
    (提出した回答ではcntから1を減算という無駄な処理が入っている)
   -4.-2.-3以外の時
    -1.ansからvを減算
    -2.stoneから1減算
    -3.cがSに無ければ以下の処理
    -4.Sにcを追加
    -5.cntから1を減算
  9.ansを出力

 後から見直すと不要な処理もありましたがまぁACだったからよし。

 https://atcoder.jp/contests/abc461/submissions/76473313

以上

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?