時間超限問題處理(c++)


c++中 如果時間超上限

做題上:

考慮關於二進制的方法 比如說

find your present (2)

這道題 可以用異或運算 來發現不重復數

對於動態規划 狀態壓縮發面 方面應用更多

比如說poj 1185 炮兵布陣

其中地圖用二進制表示 十進制儲存 運算起來十分方便

輸入輸出:

c++ 的 cin(istream) 就不如scanf() 時間上速度

同樣類比一下cout 不如printf 速度

 注意事項:

1 。用<<運算符申請空間或者表明大小時  必須加括號 這樣申請

int a[1<<16];//error
int a[(1<<16)];//true;

  在oj上會超時(實測)

2.看了個大佬關於vector的詳解 鏈接 

重點結論就是:

當動態數組內的元素比動態數組長度多一時,動態數組長度翻倍!

也就是說:if(v.size()-1==v.capacity()) v.resize(v.capacity()*2);

而長度翻倍是很花時間的。所以說做題的時候,記得事先把vector的長度拉得足夠長,以免運行的時候,vector長度翻倍浪費時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM