新一代洛谷卡评测指南

· · 科技·工程

警告:

仅供观赏,

请勿尝试!!!

我们知道,洛谷的普通题目有限制:测试点不得超过 100 个,总时限不得超过 120 秒。根据洛谷评测的性质,一次提交最多能评测 \color{red}140 秒。

然而,还有一个地方被我们忽略了:SPJ。

依然根据洛谷评测的性质,SPJ 对每个测试点最多运行 2 秒,与题目设定无关,且不会体现在评测结果中。

于是,我们可以设置 100 个测试点,每个测试点时限 1.2 秒,并使用如下的 SPJ:

#include "testlib.h"
using namespace std;
const double EXPECTED_WASTE_TIME = 1.99;
double consumed_time()
{
    return clock() * 1.0 / CLOCKS_PER_SEC;
}
int main(int argc, char* argv[])
{ 
    registerTestlibCmd(argc, argv);
    while(consumed_time() < EXPECTED_WASTE_TIME); 
    quitf(_ok, "Well done!");
}

接着提交下面的代码:

#include <bits/stdc++.h>
using namespace std;
const double EXPECTED_WASTE_TIME = 1.19;
double consumed_time()
{
    return clock() * 1.0 / CLOCKS_PER_SEC;
}
int main()
{ 
    while(consumed_time() < EXPECTED_WASTE_TIME); 
    return 0;
}

该方案无需管理员权限,可以在私有题目中操作,且一次提交最多能评测 \color{red}320 秒,吊打 P3920 [WC2014] 紫荆花之恋,且评测结果为 AC,极不易被察觉,还不会受到长时限题目的提交限制,按照 3 分钟 15 次提交的默认限制,如果用一个 Bot 不间断提交,将可以卡爆 \color{red}26 台评测机,使它们不间断工作!

但是,你以为这就结束了?没有!

还有一个地方被我们忽略了:交互库。

依然根据洛谷评测的性质,交互库对每个测试点最多运行 4 秒,与题目设定无关,且不计入运行时间(但评测结果为 TLE)。

于是,我们可以设置 100 个测试点,并使用如下的交互库:

#include "testlib.h"
using namespace std;
int main(int argc, char* argv[])
{ 
    registerInteraction(argc, argv);
    int x;
    cin >> x;
}

接着提交下面的代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{ 
    int x;
    cin >> x;
}

该方案无需管理员权限,可以在私有题目中操作,且一次提交最多能评测 \color{red}400 秒,吊打 P3920 [WC2014] 紫荆花之恋,还不会受到长时限题目的提交限制,按照 3 分钟 15 次提交的默认限制,如果用一个 Bot 不间断提交,将可以卡爆 \color{red}33 台评测机,使它们不间断工作!