ABC157参加
ABC157に参加しました.
結果はこちら
Fortranで1完, C++で1完, Python3で1完でした.
A問題
Fortranで出しました.
を出力して終わりでした.
B問題
C++で出しました.
とりあえずゴリゴリ実装しました.
ビンゴで穴が開いた箇所を1とし, 穴が開いていない箇所を0とした配列を用意し, 縦・横・斜めの和をとって3になる箇所があるときにYes
と出力するようにしました.
最初, Fortranで実装したのですが何故か動かなあったのでC++で実装し直しました.
C問題
Python3で出しました.
出力する数の各桁の数を要素とした配列を用意しました.
その後, 入力に従って配列の要素を操作しました.
D問題, E問題はデータ構造の知識問題っぽいところがあったっぽいですね…
もっと精進しておくべきでしたね…
今回で緑直前まで来たので次回上がれるようにがんばります.
ABC156参加
ABC156に参加しました.
結果はこちら
Fortranで3完でした.
A問題
$N \leq 10$なら$R+100(10-K)$を, それ以外なら$R$を出力して終わりでした.
B問題
$N$を$K$で何回割れるか数えて回数を出力して終わりでした.
C問題
$N$, $X _ {i}$共に小さかったので$P$を$X _ {i}$の最小値から$X _ {i}$の最大値まで回してその時の消費する体力の総和で最も小さくなるものを出力して終わりでした.
D問題
問題文読んでから5分くらいで$2 ^ {n} - {} _ n C _ {a} - {} _ n C _ {b} -1$を計算すればいいことは見えたのですが, ${} _ n C _ {r}$を$10 ^ {9}+7$で割ったあまりの求め方がわからなくてずっと求め方を調べていたら終わってしまいました.
悲しい.
今回, D問題の考察までかなりいいペースだったのに実装でやられてしまいました.
もしコンテスト開始20分くらいでD問題まで通していたらパフォーマンスが1400行ってたので緑化してたようです…
悔しすぎてキレそう…
達成できたのにできなかった…↓
コンテスト終了後ひたすら発狂してました…今日のABCで緑色になるぞ(素振り)
— JJ1GUJ@RUPC参加するよ (@jj1guj) 2020年2月22日
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
— JJ1GUJ@RUPC参加するよ (@jj1guj) 2020年2月22日
今回ライブラリを持っておくことの重要性を身を持って実感したので今日明日にもmodのライブラリ実装します…競プロ辞めたい…
— JJ1GUJ@RUPC参加するよ (@jj1guj) 2020年2月22日
3/1にABC生えてくれぇぇぇぇぇ
ABC155参加
なんだかんだ書いてなかったので書きます.
ABC155に参加しました.
結果はこちら.
自分でも驚くほど激冷えしました.
今回はFortranで2完, Python3で1完でした.
A問題
入力された変数を配列に格納→ソート→隣同士で同じものがあってかつみんな同じじゃないか判定しました.
B問題
先頭から順に見て問題文のとおりに判定しました.
C問題
かっこつけてPythonで辞書型使ったらバグりました(敗因).
最終的にソートして隣同士が違うものになるまで足し算して出現回数を数え, 出現回数の最も多かったものを辞書順に出力しました.
かっこつけちゃだめですね…
(これ以上の感想が出てこない...)
ABC154参加(公式バチャ)
ABC154にバーチャル参加しました~
結果はA~Dの4完でした
今回は全部Fortranで出しました(や っ た ぜ)
A問題
$S$ と $T$ のうち $U$ と同じ方を1だけ減らして終わりでした.
B問題
$S$の長さを取得してその分だけ'x'を出力して終わりでした.
C問題
数列$A$をソートして隣り合うもので等しいものがあれば'NO', なければ'YES'を出力して終わりでした.
D問題
各$p _ {i}$について期待値を求め, 累積和をとったあとに$K$の間隔で引き算して終わりでした.
E問題
場合の数でやろうとしましたが$N$の桁数のときの扱い方がわからずに詰みました.
恐らく$i (K \le i \le (Nの桁数-1))$のときは愚直に
を計算して足していけばいいと思います(間に合うかわかんないけど最大で100桁だから間に合うはず)
F問題
をうまいこと2項定理を使って式変形させてあげれば行けると考えたのですが式変形がうまくいかず(数弱の極み)だめでした.
解説を見たらE問題はDPを使って解く問題だったんですね…
EDPCをもうちょっとまじめにやってたら解けたかもしれない…
F問題はなんか似たようなことを考えてる気もしますが…(正直良くわからん)
とりあえず昨日同じペースでできてれば緑色直前まで行けたっぽいです.
また次がんばります
ABC153参加
ABC153に参加しました.
久しぶりに5完しました!
やったね!
コンテスト成績はこちら
今回はFortranで3完, Pythonで1完, C++で1完でした.
A問題
FortranでACしました.
して, 小数点以下を切り上げて終わりでした.
B問題
FortranでACしました.
の総和がより大きいかどうか見て終わりでした.
C問題
FortranでACしました.
モンスター全員の体力の総和から, 大きい順に匹分のHPを引いて終わりでした.
D問題
Python3でACしました.
モンスター全員の体力をからにする操作を1回としてカウントすることにします.
条件から, 1回の操作でモンスターの数が2倍に増えること, そして最初のモンスターは1匹だけであることから回目の操作におけるモンスターの数はとなります.
よってモンスター全員を倒すためにはを2で割ることのできる回数(商が0より大きくなる回数)をとしてとなることがわかります.
以上からを2で何回割れるか数えてを求めれば終わりになります.
E問題
C++でACしました.
サンプルケースから規則性が見られず, あとはなんかが報酬でがコストっぽく見えたので直感的にDPかな?って思ってみてました.
その後, 制約を見るとがだったのでここでDPだと確信して紙DPをして遷移式を考えました.
行列のdpテーブルを考えたときの遷移式は以下の通りです.
$$ dp[i][j]= \begin{cases} \lceil B[i]/j \rceil \hspace{10pt} (i=1)\\ \min (dp[i-1][j],B[i]) \hspace{10pt} (j \leq A[i])\\ \min (dp[i-1][j],dp[i][j-A[i]]+B[i]) \hspace{10pt} (others) \end{cases} $$
久しぶりの水パフォでHighest更新です!!
やったね!!!
3月末までに緑色がだいぶ射程圏内に入りましたね.
今回のセットは全体を通して統一感と言うかストーリーというかがあってとても楽しかったです.
多分次回は冷えると思いますが極力冷えないようにがんばります.
ABC152参加
ABC152に参加しました.
激冷えしました…
コンテスト成績はこちら
今回遂にFortranで3完しました.
A問題
の時にYes、それ以外の時にNoを出力して終わりですね. はい()
提出コードはこちら↓
B問題
を回だけ出力して終わりですね. はい()
提出コードはこちら↓
C問題
無限に時間を使いました…
最初は隣同士で降順になっているものの数を数えればいいかと思っていたらWAになりました(それはそう).
結局先頭から降順になっているものの数を数えることでACしました.
WAしたコードはこちら↓
ACしたコードはこちら↓
E問題
問題文から全てのについてとなれば良いことからがの最小公倍数になれば良いことがわかります.
そのため、最小公倍数を求めてから全てのについて商を取って足して最後にとの余りを取れば終わりのはずでした.
計算結果が非常に大きくなることが予想されたためさすがにこの問題はPythonで書きました.
が、
は?
はああ???
結局これに詰まって時間内にACできませんでした.
悔しい…
追記
結局最小公倍数を出した後にとの余りをとり、各の逆元をかけることでTLEされずにできるようです.
逆元の生成についてはこちらを参考にしました↓
後日ACしたコードはこちらです↓
解説読む限りE問題はどうやら最小公倍数を素因数分解した状態で持っておくべきだったようですね.
この前冷えないように頑張ると言ってたのに冷えましたね…
知ってました()
とりあえず3月末までに緑色になれるよう頑張ります.
はああああああああああああ
追記
なんだかんだでFortranで1st ACしてた.
やったね
ABC151参加
ABC151に参加しました.
ratedになってしまいましたね*1
コンテスト成績はこちら
今回はC++で1完、Fortranで2完でした.
A問題
cout<<(char)(c+1)<<endl;
でできるので便利ですよね*2
B問題
Fortranで出しました.
いちいち平均を求めると面倒だし下手すると数値がずれていってしまうため、必要な合計点から得られた得点を引いていくのが最善ですね.
それで最後に出てきた値がマイナスならゼロにして、満点より値が大きかったら-1を出力すればできました.
C問題
Fortranで出しました.
ほぼほぼ実装ゲーでしたね.
ACしなければペナルティは生えないことを知っていますか?僕は知りませんでした()
ちなみにこれで2ペナ生やしました.
D問題
たぶんDFSすればACできると踏んでいましたがここら辺でお腹が空いたのでご飯を食べにいきました.
できたらFortranで3完したかったですね.
どう考えてもコンテストの途中でご飯食べにいくのどうかしてますよね.
以後気をつけます()
どうやらF問題は恒例の数学問題*3だったようなのでご飯食べに行かずにやるべきでしたね.
まぁとりあえずHighestは更新できたのでよしとしましょう()
いつもHighest更新した後のコンテストではだいたい冷えてるので次はとりあえずレートを冷やさないように頑張ります.