- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
经验分享与竞赛程式库-国立中山大学资讯工程学系平行处理室
* 高等程式設計與實做 PG Tsai @ TFcis 2011/06/09 * 我是誰 蔡宗翰 a.k.a. PG 台南一中 2004~2007 中山大學資訊與工程學系 2007~2011 交大資研所 網路與工程組 2011~ ACM題數 500題 三次ACM國內 region 兩次ACM國外region 大綱 Part I.程式庫(比賽用小抄)介紹 Part II.程式比賽經驗分享 Part III.千里之行,始於足下 * * Part I 競賽用程式庫 PG Tsai @ TFcis 2011/06/09 競賽用程式庫 * 比賽過一個小時 連warshall都袧不出來… 小抄分類 1.比賽IO操作 檔案讀寫 (C freopen sscanf / C++ fstream sstream ) 2.PG嚴選 STL必備容器與演算法 3.比賽常見的初階演算法 * 比賽技巧 資料流重新導向 方法: C:\ test.exe in.txt out.txt 效果: 將in.txt的文字當成鍵盤輸入 餵給程式 將程式輸出寫入到檔案 * IO處理 檔案讀寫 無腦版 (將螢幕鍵盤的IO改為從檔案IO) freopen(“file”,”r”,stdin); freopen(“file”,”w”,stdout); C++ 正常版(fin fout 操作同cin cout) ifstream fin(“file”); ofstream fout(“file”); * IO處理 字串資料流 使用時機: 遇到不定量輸入,且資料用換行結尾時 #includesstream string tmp; getline(cin,tmp); istringstream cin2(tmp) ; while(cin2 data){ … } * STL必備容器與演算法 1.map (關聯式陣列) 2.sort (排序) 3.priority_queue (優先權佇列) 4.queue / stack (佇列 / 堆疊) * 關聯式陣列 #include map 宣告: map 型態1,型態2 變數名稱; Ex: map string,int PG; 操作 :可直接使用[]操作 Ex: PG[“test”]=123; PG[“test”]++ ; 若型態1的資料不存在則會初始化一個 型態1的資料必須提供比較函數 * 範例 * Sort #include algorithm int data[] = {2,4,5,1,3}; sort ( data , data + 5); 自訂比較函數 bool cmp(int a , int b){return ab;} 如果需要穩定排序: stable_sort * * * Priority Queue * Queue / Stack Queue: 宣告 queue型態 變數名稱; push()插入 front()讀取 pop()移除 Stack: 宣告 stack型態 變數名稱; push()插入 top()讀取 pop()移除 * 範例 * 範例 * 常用演算法 Floyd-Warshall 最小生成樹 暴搜 / BFS 最短路徑 遞迴+剪支+記憶 動態規劃 網路流 * 質數相關 拓樸排序 Union-and-Find 計算機幾何 * Part II 個人心得分享 PG Tsai @ TFcis 2011/06/09 個人ACM歷程分享 一切的一切:台南一中 資訊社 契機:高二上南市賽失利,開始衝ACM 自由學風:高二整學年,公假超過一半 TOI選訓營:這輩子最充實的時光 * 個人ACM歷程分享 高三沈迷於ACM ,成績(44/45)遭約談 高三下:大夢初醒,重拾荒廢已久的學業 * 反思 基本功的鍛鍊,大量練習的重要性 環境:在強者雲集的情況下,容易思考本身的不足,與方便詢問問題 學業:強健的數學底子才是解題的根基 未知旅程:永無止境的程設之路 * * Part III 實踐! PG Tsai @ TFcis 2011/06/09 從哪開始練習ACM解題 來修”高等程式設計與實做” 在 Lucky貓的ACM園地 找中譯題目 Zerojudge 高中生解題系統 * 練習方式 “可”重複實做已經會的演算法 “盡量別”重複利用以前的程式碼 不排斥白爛題 “不要”在徹底思考前翻閱解答 卡關? 找助教/問同學/爬討論版/google 校內資源:高程網頁/校內ACM培訓 實踐:校內賽/大專盃/ACM region/南城盃 * 關於題數 題數不代表實力,但代表你曾經花多少時間在ACM上面 ACM百題才開始 ACM千題才開始 追求神乎其技的程式設計之道 * * * Thank Y
文档评论(0)