卡時
背景
有的時候,我們的搜尋會搜很很很很很久,會\(TLE\)。\(TLE\)的分數\(=0\),但是如果你在即將\(TLE\)時輸出了當前最優解,分數即可\(\geqslant 0\)。那麼這是就需要卡時。
什麼是卡時
卡時,顧名思義,卡時間,就是我們要用一個東西記錄當前的時間,如果快要超時了,輸出當前最優解,結束。
實現
樸素版
#include<bits/stdc++.h>
//#include<ctime>
//如果你不用bits/stdc++.h那麼一定要加ctime
using namespace std;
int st;
signed main(){
st = clock();//記錄一下當前的時間的
while(1){//假裝在搜尋
if(clock()-st >= 0.95) break;
//如果現在時間-開始時間要超過1s了,退出
}
cout << 52520 << endl;//輸出當前搜尋出的最優解
return 0;
}
卡多久
\(999\)嗎?不行。首先後面還要輸出最優解和退出程式,時間不夠的退出。其次,評測機波動會導致時間變化。(比如今天一個同學相同程式碼第一次交\(80\),第二次交直接\(100\)
那就\(950\)吧。其實可以,但是\(CCF\)重測時時限超過\(950ms\)就不給重測了(雖然沒有人會去重測,據老師所知,重測沒有成功的)。
所以綜上所述,大概\(990\)就可以了。