卡时
背景
有的时候,我们的搜索会搜很很很很很久,会\(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\)就可以了。