How To Start Competitive Programming (English subtitles)

Ғылым және технология

I will explain how to start the sport of competitive programming. No programming experience is necessary.
I will discuss the necessary computer specs, how to choose a language (C++ vs Python), and how to practice.
Next: • 競技プログラミングの環境構築 [VSCode...
Previous: • 競技プログラミングとは?【ゆっくり解説】
Playlist: • 競プロ初心者へ / For CP Begin...
PC selection (Japanese): itkaisen.com/
Lenovo PC product page (Japanese): www.lenovo.com/jp/members/kak...
Typing game (Japanese): sushida.net/
AtCoder's C++ Introduction (Japanese): atcoder.jp/contests/APG4b
AtCoder's problem list: kenkoooo.com/atcoder/
Textbook (original): cses.fi/book/book.pdf
Textbook (Japanese translation): github.com/recuraki/cphb-ja/r...
(English subtitle available.)
0:00 Introduction
0:19 Can't do it on a smartphone?
0:38 Necessary computer
1:11 Typing
1:59 Language selection
4:05 Introduction to the language
4:31 How to practice
6:10 Reference materials
7:02 What's next?
X (Former Twitter): / evima0

Пікірлер: 33

  • @evimalab
    @evimalab7 ай бұрын

    Q. C++がPythonより有利なのはAtCoderでどのくらいのレーティングから?移行のタイミングは? A. レーティングが4桁になる頃からC++の方が有利だと思いますが、 移行のタイミングはもう少し早めをおすすめします(400~1000のどこか)。 以下、詳しく書きます(非常に長いです)。 まず、Pythonが不利になるような問題の例をもう少し挙げます。 致命的に不利な例: atcoder.jp/contests/abc322/tasks/abc322_f [Difficulty 1806 (執筆時点)] 本番中のPythonでの正解者がいませんでした(コンテスト後にはいますが…)。 中程度に不利な例: atcoder.jp/contests/abc324/tasks/abc324_f [1815] 動画で挙げた例です。int→floatの変換を繰り返したりすると時間切れのおそれがあります。 atcoder.jp/contests/abc322/tasks/abc322_d [1310] atcoder.jp/contests/abc307/tasks/abc307_c [1307] 全探索の方針次第ではC++でないと間に合いません(ABC-Cでここまでの問題が出ることは稀ですが)。 少し不利な例: atcoder.jp/contests/abc325/tasks/abc325_c [400] こちらは普通のABC-Cですが、Pythonで再帰でDFSを書くと時間もメモリも足りなくなります (スタックでの書き換えは難しくありませんが)。 この程度にしておきます。 このような問題の存在を考慮して、PythonがC++(など)に比べて有利か不利かを色ごとにまとめると、 およそ次のようになるでしょう。 灰 (1~399): 有利 茶 (400~799): 少し有利~互角 緑 (800~1199): 互角~少し不利 水 (1200~1599): 少し~中程度に不利 青 (1600~1999): 不利 黄~ (2000~): null(論じる価値なし) しかし、Pythonでの競技に慣れきってしまうと移行が難しくなるため、早めの移行をおすすめします。 (移行というのはメイン言語の移行という意味で、移行後もPythonが使える問題では使って構いません。) 以下、各色のPythonメインの人に対してコメントします。 黒 (0、これから始める): 動画で話した通り、 「競技以外のプログラミングに興味があるか」「あとでメイン言語を乗り換えることになってもいいか」 のどちらかへの答えがNoならほぼ確実にC++で始めるべきで、両方YesでもC++で始めても構いません。 灰 (1~399): Pythonメインで続けて問題ありません。 しかし、もし移行したくなったら移行してしまって構いません。 茶 (400~799): まだまだPythonメインで続けても構いませんが、この辺りからC++のメリットが出てきます。 茶色到達時が最初のちょうどいい移行タイミングでしょう。 他のタイミングでも、Pythonに一度でも不便を感じたら積極的に移行を検討するべきです。 緑 (800~1199): そろそろPythonの雲行きが怪しくなってきます。 緑到達時は多くの人にとって無難な移行タイミングでしょう。 そこで移行しなかったら、レーティング1000に到達したあたりでもう一度検討してください。 目標が水色 (1200) でそこで競技をやめるという場合は、Pythonで走り切ってもいいでしょう。 水 (1200~1599): ここまで来ると、JavaやC#以上の速度の言語を使えないことは弱点の一つになります。 まだ競技を続けるなら、ほぼ問答無用で移行するべきといえる段階です。 青 (1600~1999): 上で見た通り、ここまで来ると解くべきキー問題がPythonで解答困難だったりします。 縛りプレイをしているのでなければ、いますぐ移行しましょう。 黄~ (2000~): これを真面目に読んでいる人にこのレンジの人はいないでしょう。 (補足:筆者は2023年現在もAtCoderで出題しています。プロコンへの出題は2013年から行っています。)

  • @zouo-from-Taikonotatsujin

    @zouo-from-Taikonotatsujin

    Ай бұрын

    全問題python使用している人の中での最大レート値はわかりますか?

  • @256yayo
    @256yayo7 ай бұрын

    楽しみに待ってました。

  • @user-sc8xx2cq8r
    @user-sc8xx2cq8r4 ай бұрын

    すぐに親切なチャンネルだと感じました。

  • @evimalab

    @evimalab

    4 ай бұрын

    温かいお言葉ありがとうございます!励みになります。

  • @evimalab
    @evimalab7 ай бұрын

    何でも質問してください。(動画の内容から少し逸れていても構いません。) Please feel free to ask anything. (Even if it deviates a bit from the content of the video.)

  • @swap_paws

    @swap_paws

    26 күн бұрын

    わかりやすい解説動画をたくさんあげていただきありがとうございます。とても助かっています。 もしよろしければ、をincludeする手順を教えてほしいです。

  • @khoitan4758
    @khoitan47587 ай бұрын

    I love your videos

  • @Wicxy
    @WicxyАй бұрын

    始めて一ヶ月ほどでA/Bは安定して解けるようになってきました。今、競技プログラミングの鉄則などの参考書を購入しようか迷っています。動画で紹介されていたアルゴリズムの参考資料でも十分ですかね?

  • @romekana8294
    @romekana8294Ай бұрын

    好き

  • @user-bk3hh8pd2h
    @user-bk3hh8pd2h5 ай бұрын

    少し飛んだ質問になるのですが、C++でGUI系を作るために画面上にウィンドウを表示させたいと思い、というinclude?にたどり着いたのですが、エラーが起き、どうもこれはWindows固有のAPIなのでLinux上の環境だと動作できないということになるんでしょうか?

  • @evimalab

    @evimalab

    5 ай бұрын

    はい、windows.h はWindows専用です。 LinuxでGUI開発をするには、他のライブラリやフレームワーク(Qt、GTK、wxWidgetsなど)が必要そうです。

  • @user-qb6nr8rz9m
    @user-qb6nr8rz9m3 ай бұрын

    大学4年で、来年からエンジニア職に就くものです(たぶん) のんびりPythonでAtcoderをやってきてC問題がギリギリ解けるか解けないかレベルなのですが 将来のことを考えるとJavaやC++に移行しておいたほうが良いでしょうか? もちろんその職場の環境にはよるんですけど・・・

  • @evimalab

    @evimalab

    3 ай бұрын

    「職場の環境による」で正しいと思いますが、未定のようなので以降は基本的に競技プログラミングについてだけ考えます。 「将来のことを考えるとPythonからJavaやC++に移行しておいたほうが良い」も基本的に正しいと思います。 (競技のことだけ考えると、どうせ移行するならメジャーなC++がベターといえますが、Javaを選ぶ理由があればJavaでも十分です。) ただ、ABC-Cが五分五分という段階だとこれらの言語の恩恵は少ないでしょう(Pythonだと少し不利になる問題が現れるのはABC-Fあたりからで、決定的に不利になる問題はABCにはほとんどありません)。 正直なところ、判断が難しいラインです。 とはいえ、Pythonでの競技に慣れきってしまうと移行しづらくなるでしょうから、どちらかというといま移行した方がいいかもしれません。

  • @user-ed9wn8sn8e
    @user-ed9wn8sn8e29 күн бұрын

    julia言語ユーザー(歴1年未満)で、c言語は授業でかじった程度です。質問が2つあります。 cとjuliaの速度の差ってどれくらいでしょうか? また、juliaに限界が来るのはどのレベルあたりなのでしょうか?

  • @623psiki5
    @623psiki52 ай бұрын

    プログラミング自体初心者はまず参考書から始めるべきですか? (自分はC++とpythonやってたがしばらく離れてた上に競プロは初心者レベル) C++とpythonを理解するためどちらでもやって緑にもなりたいです

  • @evimalab

    @evimalab

    2 ай бұрын

    そもそも、競技プログラミングはプログラミング言語自体を理解することとはかなり違う方向に向かいます。 C++とPythonを理解すること自体が主な目的とはっきりしているなら、そのために競技プログラミングをやる必要は正直なところないでしょう。この場合は参考書から始めて問題ないはずです。ついでに競プロもやる場合、言語学習とは別の科目として言語はC++に絞ることを勧めます。 競技プログラミング自体が主な目的なら、正直なところ言語を一通り理解する必要はないでしょう。とりあえず競技に取り組んでみて苦しければ参考書に戻ればいいはずです。競技が主目的なら言語はC++に絞ってしまいましょう(局所的にPythonを使ってもいい場面もありますが、意図的に二刀流を目指すのは勧めません)。 いずれにせよ、競技プログラミングは言語の学習の場としてはいまひとつで(人生初めてのプログラミングという段階では有用だと思いますが)、C++を使えるならC++を使うことを勧めます。

  • @lansazm
    @lansazm7 ай бұрын

    業務でgolangを使ってるのですが、pyrhonかc++のどちらかを新しく勉強してでも使うのがおすすめですか?

  • @evimalab

    @evimalab

    7 ай бұрын

    ご質問ありがとうございます! Goは競技ではあまり見かけないのでプログラミング経験者向けおすすめ言語に含めませんでしたが、少なくとも入門~初級の段階では問題なく使えそうです。 試しにGoで始めてみて、本格的にやる気になったらC++を習得するという段取りをおすすめします。 (なお、Pythonは、すでにGoを書ける方が競技のために習得するメリットは少なそうです。 プログラミング未経験者が出だしでの挫折リスクを下げるのには良い選択肢ですが…。 競技のために言語を習得するなら、C++以外の選択肢はほぼ考えなくて良いでしょう。)

  • @lansazm

    @lansazm

    7 ай бұрын

    @@evimalab ご回答ありがとうございます。 ずっと競プロには興味はあったのですが、書籍を読んでもc++で書かれていたり、ネット上でもc++がおすすめされたりしているので、c++一択だと思ってました。 最近私生活で空いた時間をあまり作れず、競プロのためだけに慣れない言語に触れるのは少し腰が重かったんです。 でも、えびまさんのおかげで、まずはgoで始めてみようと思えました。 ありがとうございます!

  • @macbeth143
    @macbeth1432 ай бұрын

    I can manage to solve problems that require no knowledge but about the problems that require knowledge, should i learn and practice these knowledge or continue solving and when i meet a problem requires knowledge I should now study this knowledge?

  • @evimalab

    @evimalab

    2 ай бұрын

    I think in most cases you can just continue solving problems and learn new knowledge when you really want to learn it, or it would be useless in the battlefield.

  • @user-hf1rl1ev6m
    @user-hf1rl1ev6m7 ай бұрын

    現在pythonを使っているのですが、どのくらいのレーティングからC++有利になってきますか?

  • @evimalab

    @evimalab

    7 ай бұрын

    クリティカルなご質問ありがとうございます! 【短い答え】レーティングが4桁になる頃からC++の方が有利だと思いますが、 移行のタイミングはもう少し早めをおすすめします(400~1000のどこか)。 【長い答え】とんでもなく長くなりそうなので、独立したコメントとして書きます。

  • @user-hf1rl1ev6m

    @user-hf1rl1ev6m

    7 ай бұрын

    詳細な回答ありがとうございます! 茶色まで来たのでC++への移行をしていきたいと思います@@evimalab

  • @ccuplover8861
    @ccuplover88617 ай бұрын

    業務でPHP、Jsを使っているのですが、それらは競プロNGですか?

  • @evimalab

    @evimalab

    7 ай бұрын

    どちらもOKとNGの境界線上で、JavaScriptはOK寄り、PHPはNG寄りといったところだと思います。 JavaScriptが使えるなら、とりあえずPHPは選択肢から外して良いでしょう。 JavaScriptも競プロに最適とはいえませんが、入門~初級の段階では選択肢の一つには入ります。 ただ、JavaScriptはC++と基本的な文法構造が似ているので、正直なところC++の習得が最もおすすめできる状況です。 競プロのためだけに言語を覚えるのは…という場合は、試しにJavaScriptで始めてみて、本格的にやる気になってからC++を習得しても問題ないでしょう。

  • @yash1152
    @yash11522 күн бұрын

    0:26 0:28 0:39 0:42 well, i could make out some words.. yesu, no, high-specc

  • @user-cf6iw4tu7g
    @user-cf6iw4tu7g7 ай бұрын

    使用している 音楽を教えてください

  • @evimalab

    @evimalab

    7 ай бұрын

    メイン:鞄と少年 musmus.main.jp/music_movie_03.html ラスト:星のコラージュ musmus.main.jp/music_movie_02.html です。

  • @yash1152
    @yash11522 күн бұрын

    1:50 video starts here

  • @rishabhraj8233
    @rishabhraj82333 ай бұрын

    thanks I code in cpp

  • @evimalab

    @evimalab

    3 ай бұрын

    You're welcome!

Келесі