SHIINBLOG

きょうぷろたのしいよ

琉大 Advent Calendar 2019 3日目です.

記事用意するの忘れていました_(:3」∠)_
そのため,構成・内容が微妙かもしれません.

タイトル通り競プロの話をします.
(開催時間の関係で)基本的に AtCoder しか参加していないので, AtCoder の話がメインです.

僕自身まだ始めたばかりの初心者なので,すごいアルゴリズムの解説!
とかはしない予定です.

競プロとは

ある期間(時間)内にパズルのような問題をプログラミングして解くものです.
AtCoder では毎月数回 ,1回90分のコンテストがあります.

こんな感じの問題が出ます. https://atcoder.jp/contests/abc145/tasks/abc145_a

整数 r が与えられ,その r を半径とした円が,半径 1の円の面積の何倍になりますか.
という問題ですね.

円の面積の公式が分かれば,すぐに求められますね.
 r ^ 2 \pi なので,  r ^ 2 が答えになりますね.
競プロでは C++ で解いている人が多いので, C++PythonRuby で解いてみます.

// ABC145A.cpp
#include <iostream>

using namespace std;

int main() {
    int r;
    cin >> r;

    cout << r*r << endl;
}
# ABC145A.py
r = int(input())

print(r*r)
# ABC145A.rb
r = get_s.to_i

puts r*r

各言語,入力を取って  r \times r を出力すれば良いですね.
簡単でしょ?



競プロやって何が嬉しいのか

プログラムを書く習慣ができる

AtCoder Beginner Contest というビギナー向けのコンテストが月に2回くらいは開催されます.
これに参加するだけで,定期的にプログラムを書く習慣ができます.

さらにやる気が出たときは,過去問などで復習することができます.
最初のうちは,言語の実行速度が問題になることは少ないと思うので, AtCoder にある好きな言語でプログラミングの練習ができて良いです.

実装力・実装速度が上がる

数学っぽい問題もありますが,実装力が必要な問題もちょいちょいあります.
そういう問題を解くことによって,実装力がつきます.
後は,いろいろなアルゴリズムの知識が必要になるので, そういうアルゴリズムを実装できるようになります.

また,コンテストに参加すると,問題を解くと点数がもらえて,同点の場合は解いた時刻が順位に影響します. 参加しているうちに簡単なアルゴリズムであれば,一瞬で思いついて,すぐに実装することができるようになります.
AtCoder の chokudai さんがこういうツイートをしています.
https://twitter.com/chokudai/status/1153528912531451905?s=20

競プロ強くなるとロジック単位の実装に強くなります.
場合によっては,就職にも有利になるかもしれません.
まぁ,競プロで書くプログラムは使い捨てになることが多いので,そのまま業務で使えることはないでしょうけど…

計算量を見積もることができるようになる

一般に短時間のコンテストは2秒程度の時間制限があります.
つまり,愚直な解法だと2秒以内に終わらないことがあります.

そこで,計算量を見積もって,大きい場合は減らす必要がでてきます. 上記のロジック単位の実装とも被りますが,そういうところに強くなれます(雑).

ie にも 競プロやっているひと結構居ます

多分います(少なくとも僕はやってます).
競プロの話題で先輩と仲良くなりましょう!!

僕もできる限り,解いた問題はブログに書いているので少しでも参考になれば良いなと思います.

楽しい

上に書いていることは建前で,単純に問題を解くのが楽しいです.
解けないと禿げそうになりますが,そういう問題が解けたときのうれしさは特に大きいです.



まとめ

プログラミング1で Python 習ったし,競プロ解いてみるか〜という感じで解いてみましょう!
いくつか競プロっぽい問題が解けるサイトをあげておきますが,とりあえず AtCoder のコンテストに参加してみると良いと思います(とは言ったものの近々ビギナーコンテストがない…).

何か分からない事があれば @e145755 にリプでも送ってもらえると,手伝いできるかと!



競プロ関係のサイト

日本語でできるやつだけ上げておきます.

  • AtCoder 日本だと一番人気だと思います?
  • AIZU ONLINE JUDGE たくさん問題があります.
  • yukicoder 競プロの模試・勉強会の位置づけを目指しているみたいです.結構問題あるし,ちょいちょいコンテストも開かれてます.
  • paiza paiza は競プロじゃないですが,スキルチェックが競プロの形式とほぼ同じです.