卡時

心向阳无畏伤發表於2024-10-06

卡時

背景

有的時候,我們的搜尋會搜很很很很很久,會\(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\)就可以了。

相關文章