從零開始的演算法競賽入門教學
發表於 更新於 演算法競賽入門三階段 從零到一:演算法競賽會用到的基礎語法
- 介紹競賽必定要會的語法,讓你不再困擾該學什麼!
- 對應程度:APCS 實作三級
- 預計學習時數:25 小時
從一到十:演算法競賽會用到的基礎算法
- AP325 講義 by 吳邦一教授
- 到底演算法競賽的演算法,指的是哪些呢?
- 對應程度:APCS 實作五級
- 預計學習時數:100 小時
十以後的世界:演算法競賽無止盡的追尋
- 板中講義 by 蔡旻諺學長
- 什麼,你説上面你都學會了,你確定嗎?
- 對應程度:TOI 一階以上
- 預計學習時數:250 小時 up
這邊會有什麼?我幸運的拿到了 IOI(國際資訊奧林匹亞) 2020 的
銀牌
,但在選訓營中,發現能進入選訓的高中生,大多都來自那些資訊社團發達的學校,如建中、實中、南一中、附中、成功等,在資訊社不活躍的學校,則幾乎沒有人進入奧林匹亞選訓營。回想起自己的學習過程,我認為關鍵在於新手入門難度。 包含 TOI(台灣資訊奧林匹亞) 在內的 OI 競賽入門門檻不低,於初期若沒有好的引導人(通常為高中資訊社團),常會多走許多歪路,或者根本不知道應該要學什麼、什麼不必學,若買了一本 C++ 的書,然後一味的啃,會發現其實演算法競賽其實不需要對語法那麼熟悉。網絡搜尋演算法競賽,第一本出現的書籍:打下好基礎:程式設計與演算法競賽入門經典,對新手來説也過於艱澀,且題目與台灣目前的命題趨勢並不相同。
這裏將會整理自己兩年來的演算法學習經驗,目標成為一本好懂、實用的演算法競賽書籍,期待能帶領更多年輕高中生,踏入這個正在台灣發展中的有趣領域!
演算法競賽,重要的是思考,而不是過多不必要的語法
目標受眾 - 完全沒寫過程式,但對數學有興趣,想嘗試演算法競賽
- 略有程式基礎,但不了解演算法競賽,或不知道競賽上有哪些常出現的演算法
- 非大校資訊社員,卻也想參加演算法競賽、進入全國賽以及選訓營
0-26 本章總結
發表於 更新於 完結啦!你已經學會了拿下 IOI 金牌所需要的所有語法了!是不是很簡單呢?
不知道看到例題的感想,是覺得超級簡單、或是難到完全想不到、或是剛剛好呢?
在後段的 STL 章節裏,我增加了例題的難度,四星的題目約是全國賽門檻等級,也就是説,如果你能不依靠詳解解出四星的題目,而你又幸運的不住台北,那你可能已經有參與全國賽的實力了喔!
五星以上的題目們,就真的非常難了。其中在 set 中一題被我標為 8 顆星的
直升機抓寶
,雖然程式只有十餘行,不過這題在當年的全國賽上,可是只有五個人解出來的大難題呢! 當然,如果你是初學者,寫不出太難的題目不用灰心。擺放高級題目的目的,僅僅是在説明,只需要如此簡單的語法,就能解決這麼多問題而已,對於初學者而言,能了解教學中的概念,並寫出三顆星以下的題目,就算是相當不錯的了!
接下來你已經有了基礎的知識,可能也對於演算法有了初步的了解,之後要做什麼呢?
參加一場 Div.3 或者是 的 Beginner Contest 吧!如果可以,請試着在結束後查看出題者提供的題解。
也可以試着參加一場免費的 APCS 考試,反正免費,考爛了也不虧。
可以去刷一些題目,檢驗自己的學習成果。如果不知道從何寫起,可以參考一下 上的高一生程式競技排名賽歷屆試題。
如果覺得簡單的話,恭喜你,你已經能挑戰下一階段的 AP325 了!
礙於時間關係(大學真的太忙了),以及之後的教學已有完善資源,我的教學就在這裏畫上句號,希望讀完這份講義的你能有所收穫!
發表於 bool 世博娛樂體驗分 陣列 bitsetbitset 是特別優化過的 bool 陣列,時間與空間均較 bool 陣列少,其中以時間的影響最為顯著。
bitset 的語法如下:
特別的地方是,<> 內放的是大小。
語法跟 bool 陣列一樣
有一些特別的函式
1 | <<br>>cout << b.count() << ' '; |
.count() 回傳 bitset 中 1 的個數。
1234 | b.set();c /span> << b[1] << ' ';b.reset();c /span> << b[1] << ' '; |
e>
.set() 將所有 bit 設為 1,.
Here's more information regarding 世博娛樂香港娛樂城 visit our own webpage.