你好。這裡是 Un_titled。
我只是一個普通得不能再普通的高中生,並自稱以競賽程式設計為興趣。
我只是因為偶然找到、覺得好像很有趣這種超級輕率的動機,從完全沒經驗開始踏入競程。
但由於我本身也是第一次接觸程式設計,所以在升到茶色之前吃了不少苦頭。因為剛開始的時候常常會想「如果有這種建議就好了!」,所以我把這些整理成文章。
希望這篇文章能幫助完全沒有經驗的人踏出第一步。
我是在國三春天接觸到競程的,但因為本來就沒什麼時間,也不知道該怎麼學程式設計,結果停滯在灰色整整一年。
高一時等級成長了很多,花了一年把分數提升到水色。
截至撰文時大概是這樣。

在給定條件下,使用程式設計解決所給定的問題、課題,並競爭其過程與結果的方式,稱為競賽程式設計。
引用來源:什麼是競賽程式設計? - AtCoder Info
想必正在看這篇文章的各位,對競程的定義應該多少都有概念了。那麼詳細說明就先省略。
簡單來說,就是出一些像數學題的問題,然後寫程式來解答。
最值得一提、最大的魅力?就是樂趣。當然。
不只能享受「我在寫程式耶!好帥!!」這種感覺,當自己的分數(類似等級的東西)上升時,甚至會有種沉浸在多巴胺裡的感覺。超棒的。
畢竟名字裡就有程式設計,實作能力應該會變得很強。
在實作的過程中,也會比較擅長有條理地思考事情。
因為有很強的解謎要素,所以也很可能讓腦袋轉得更快。我自己覺得開始競程之後,讀書吸收知識的效率也變高了。
也可能只是因為想玩競程的慾望驅使自己變得更有效率而已。
我認為至少需要這些。
如果你對以下內容有不安,建議先補足再回來看。
進入正題
來介紹 AtCoder 的做法
這就是 AtCoder。
請先參考 AtCoder 的開始方式 完成使用者註冊。
帳號建立好之後再回來。
其他便利的服務還有
等等。請自行搜尋看看。
目前主要使用的語言印象中以 C++ 和 Python 這兩種為主。
另外也有使用 Rust、C# 等語言的使用者。
如果你現在沒有特別想用的語言,我推薦 C++。
理由如下:
Python 常被說是入門門檻較低的語言,但和 C++ 相比,處理速度往往比較慢。(不過如果用 Codon 之類的工具就另當別論)
老實說,強的人不管用哪種語言都一樣強,所以如果你覺得自己會把做不到的事情怪到語言上,那就選 C++ 吧。
特別是 高中生以下、打算以資優生奧林匹亞為目標而開始的人,我也建議使用 C++。
在準決賽與決賽階段,不只可能沒有保證能用 Python 解出滿分解法的情況,也可能只允許使用 C++。
語言學習方面,推薦使用一套叫做 APG4b 的教材。
C++ : C++入門 AtCoder Programming Guide for beginners (APG4b)
Python : Python入門 AtCoder Programming Guide for beginners (APG4bPython)
只要有國中數學的知識,加上一些高中數學的知識,基本上就夠用了。
如果你對數學有苦手意識,推薦這本 アルゴリズム×数学 這本書。
不用太緊張。只要知道怎麼求面積之類的就沒問題。會四則運算,並且對代數式有一定程度的熟悉會比較好。
如果你會國中入學考常出現的鶴龜算,那就很強了。
我也建議把二進位好好學一下。這不算太難,請務必試試看。
如果這些已經掌握住,等到語言學習結束後會輕鬆一些。
我覺得這些大概只會在茶色之後才用到 1。先有心理準備的話,之後也許會更有動力去學。
照這支影片做就能成功。
毫無疑問,還是有本機環境比較好。
從周圍獲得刺激是很棒的事情。我自己也每天從許多 FF 朋友那裡獲得動力。
但是,過度比較不是正確答案,這點是很明顯的。
冷靜下來想就會懂,但網路上太強的人確實很顯眼。
如果現在有跟你一樣剛開始競程的人存在。然而,因為周遭環境不同,成長速度也會有很大的差距。能投入精進的時間、是否有程式設計經驗、數學知識量的差異……
實在不勝枚舉。當你快要洩氣的時候,也請務必意識到「自己的步調」。
我以前曾經在灰色停滯了將近一年。甚至在變成茶色之後,也經歷過掉回灰色。即使是那樣的人,一年後也升到了水色。
倖存者偏差?能享受的人才是贏家。成為倖存者吧。就是這種心情。
競程人很多都活躍在 Twitter 上。我覺得親切的人很多。當你發文說「我不懂~救我~」時,通常會有人給你建議。
我自己周圍沒有競程前輩,所以如果沒有 Twitter 上那些前輩的存在,我大概早就放棄了。
不過再說一次,Twitter 上強者特別顯眼。也常常會覺得主流區間都偏冷色系。
只要你在心裡發誓不要失去自己的步調,Twitter 上的競程人就會成為最棒的導引。
基本用語集
先看一下競程典型 90 裡的 用語集,提交時應該就不會有困擾。
雖然沒列出來,但我認為最好知道的詞有:
這裡是寫給使用 C++ APG4b 的人看的。
1 章一定要做到完全熟練。先從這裡開始。
2 章的難度會稍微提高,但我強烈建議整體看過一遍。
3 章、4 章則是有興趣時再看也沒問題。
等到 2 章結束後,試著解看看最近舉辦的 ABC 的 A 題、B 題。如果能輕鬆解出來,我想差不多就到了可以開始學演算法的時候了。
我認為最好是去買一本叫做 鐵則本 的書。
入茶也是我曾經非常痛苦的階段,所以我也有寫文章,如果有興趣可以參考看看。
文章一直寫下去之後,好像也沒什麼要說的了。
感謝你看到最後。
總有一天我也想變成暖色。以上是水色下位的碎碎念。感謝各位的聆聽。