清華大學公選課數據結構A作業范圍查詢:http://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=936
花了接近一周時間,終於搞定了這題作業。作業並不難,但是無論我如何改進代碼總是超時,導致我一度放棄。今天終於做出來了,對C++的輸入輸出有了全新的認識。
此前用自己的方法寫下了C++代碼,但無奈總是超時,於是在網上搜到了這篇博客:http://blog.sina.com.cn/s/blog_59fa585c0102v2el.html
我幾乎照着代碼改了一遍,卻依然超時,百思不得其解。我甚至用自己的代碼和這份代碼做過profile分析,關鍵步驟耗時相差無幾。最終當我偶然將cout換成printf后就通過了,由此也可以看出不僅是cin慢,cout也很慢。
用vs做的profile:
輸入方面盡管換成了scanf,但依然占用了70+%的時間。
而在清華的OJ上的測試應該含有很多的cout,但題目中並未指出這一點,下圖是改cout之前和之后的比較,竟有超過50%的提升。