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
以上