Ruteのプログラミング日記

競技プログラミング(AtCoder)の問題の解説や、過去問を解いた感想、また解けない過去問について共有したいと思ってます。

AtCoder Beginner Contest 159 感想と今後

今回思ったこと。灰色降格が見えてしまった....

 

というのも、A問題・B問題・C問題の正解者数が多すぎるので正直なところもう諦めていました。()

 

A問題

https://atcoder.jp/contests/abc159/tasks/abc159_a


数学っぽいけど 要するに 奇数の数の足し方の総和+偶数の足し方の総和 を求める問題ですね。これを出力すれば正解となります。

B問題

https://atcoder.jp/contests/abc159/tasks/abc159_b

スライスを利用すれば解くことが出来ます。

Pythonの場合、スライスはP[指定要素:指定要素+1]でその部分の文字列を取ることが出来ます。

今回は

K = (N-1)/2

L = (N+3)/2とし、

S[0:K],S[L-1:N]が一致しているかいないかを判定すれば正解となります。

C問題

https://atcoder.jp/contests/abc159/tasks/abc159_c

愚直に考えるよりも、冷静に考えて3辺の長さがL/3のとき最も体積が大きくなります。

よって(L/3)^{3}を出力すれば正解となります。

 

D問題

https://atcoder.jp/contests/abc159/tasks/abc159_d

んー、よく分かりませんでした。

リストを再起コピー (b = A.copy())で各i(1≦i≦N)番目の要素のみを取り出したリストを作成するのは分かったのですが、おそらく全て実行してしまうとO(N^2)となるので撤退。

 

600点勢の中では早い方だとは思うんですけど、パフォーマンスはおそらく灰色間違いなしかと思います...Orz

今回の成長 → 時間はかかったがWAが1回もなかった!えらい!

 

【今後】

基本情報技術者試験が近いので、しばらくは競技プログラミングから離れるかもしれません(ただ、1日1問は解きます)

 

そこで様々な参考書を利用しようと思います

https://booth.pm/ja/items/1318168

https://booth.pm/ja/items/1573891

この2冊は「銀髪赤眼の後輩と学ぶ競技プログラミング」という本で、競技プログラミングに関することが書かれています。主に「銀髪赤眼の後輩と学ぶプログラミング2」を利用して勉強しようと思います(本書の内容については、ネタバレのためお伝えすることが出来ません、ご了承下さい)

 

②精進100問

https://qiita.com/e869120/items/eb50fdaece12be4c18faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F

 

E869120さん(競プロでかなり上位に位置されている方)が執筆した「 分野別 初中級者が解くべき過去問精選 100 問」というものがあります。

この問題を1日1問以上は解こうと思いますが、実践的な練習のため、ある程度の制限時間を設けようと思います。

300点問題相当 (100点を含む) = 15分以内

400点問題相当(100点等を含む) = 25分以内

それ以外 = 50分以内

 

これ以降は、解説を見る or ACしている方のコードを見て解説ACとしますが、なるべく解説ACとしたくはありません....

 

rng_59さんがパナソニックプログラミングコンテスト後に言っていたツイートを引用しますが、

 

 ということでした。ただ、早い人のコードが長い場合は分かりやすいコードを優先して読むようにします。

 

以上です。最後に

A問題祝正解者数8000人突破! またまた最高記録を更新したんじゃ無いでしょうか??

f:id:Rute_programming:20200322223926p:plain

A問題の正解者数が8000人を突破!