競プロ日記

競技プログラミング超初心者の日記です

きょうのまなび(AOJ)20210503

今日はAOJの次の問題を解きました

ITP1_6_D:ベクトルと行列の積
ITP1_7_A:成績
ITP1_7_B:組み合わせの数
ITP1_7_C:表計算
ITP1_7_D:行列の積
ITP1_8_C:文字のカウント
ITP1_8_D:リング


以下それぞれの雑記

ITP1_6_D:ベクトルと行列の積

こっちだと文字化け?の影響で読みにくくて飛ばしてた問題
行列って毎回考えすぎて行と列がゲシュタルト崩壊しそうになるから、もう手を動かして体に行と列を覚え込ませるしかない

提出履歴を確認したらCE、RE、WAをかましている

行列に対しての苦手意識が見え見えでちょっと笑ってしまった


ITP1_7_A:成績

数学の試験は毎回ひどい点数だったなと回想しつつ解く

場合分けがめんどくさいなと思ったので自分の納得のいくシンプルさを追求したい


ITP1_7_B:組み合わせの数

Hintにあるように3重ループで解ける問題だけど、もっと計算量を落とせるはず…と考えた結果

これは、atCoderでしばしば見かける主客転倒テクとやらで解けるのでは!?とか予想してたけど、全然違った

言葉は頭に入っていたけど、中身に関する理解が浅すぎることが自覚できたからよし(まだ完全理解はしていない)

physics0523.hatenablog.com


ただ、計算量を落とす方法はどこかで見かけたはず…と思い出したのが蟻本に載っていた二分探索

が、この問題を解いているときに睡魔に襲われていたので3重ループに甘んじてしまった

後日、二分探索にチャレンジしよう


ITP1_7_C:表計算

前問の眠気を引きずったまま続けて解いた問題

実装自体はすごくシンプルなのに、すごく時間がかかってしまった

C++だとvectorの宣言の関係でCEになるっぽいので、C++11で判定

「解ければ良かろうなのだ」の精神でいるけれど、なんでC++だとダメでC++11だとOKなのかはいつか理解したい


ITP1_7_D:行列の積

n×mとm×lの行列の積がn×lになるのを習った時、まるで真ん中のmが中和されてるみたいに消えてしまうのを綺麗だなと思ったのをなんとなく覚えている

まあ、ITP1_6_Dにも書いた通り、苦手な分野ではあるのですが…

ちなみに、こちらも漏れなくWA、CEをかましている(REしなくなっただけ成長と考えることにしよう)


ITP1_8_C:文字のカウント

これまたCE、WA、PEのオンパレード

複数の行の入力方法が分からなくて迷走しているのが手にとるようにわかる

なんでwhile(cin >> c)でEOFまで入力を続けてくれるんだろう?とか、自分のXcode上だと何で入力が止まらないんだろう?とか悩みに悩んだ結果、未来の自分に期待することにした(頑張れ、未来の自分 この文章を読んで鼻で笑うくらい成長していてくれ!)

ただ、後半は疲れすぎてやけになって提出を繰り返しているので、こうなる前にさっさと仮眠取るべきでした


ITP1_8_D:リング

問題を最初に読んだ時は、『配列の循環?螺旋本に載ってるリングバッファってこれ?』なんて思ってしまった

けど、制約を再確認して、別のシンプルな解法を思いついた時はとってもスッキリして嬉しかった

自分で気づくってどんなことにも変えられない喜びだなあと思う