如果你TLE on Subtask 4
查看原帖
如果你TLE on Subtask 4
1101744
xingshuyan000楼主2024/10/25 20:27

首先,如果你在弱化版中用了优先队列,优先队列的复杂度是 O(nlogn)O(n \log n) 的,而本题的数据范围,nn 高达 10710^7必须用 O(n)O(n) 的算法。反正我的想法就是普通队列 + 桶排序。

第二,如果你用了 O(n)O(n) 的复杂度,但是 Subtask 4 还是 TLE,那么你可以考虑对你的程序进行一个常数优化,因为这题的时间是 0.5s,如果常数太大也会超时。 一般就是把输入优化了,用快读。我刚才试了一下,只有用快读才能完全通过本题,其他的读入方式,不管是关流同步的 cin 还是 scanf,都会被卡掉。

经过测试发现,如果你用 cin, cout,而且加了

cin.tie(0) -> ios::sync_with_stdio(0);

(这是关闭流同步,加快读入速度的东西),实际上是要比 scanf 快的。当然,换行符一定要用 \n 而不要用 endl,否则你的流同步关了跟没关一个样,而且还可能会输出一些奇奇怪怪的东西。

2024/10/25 20:27
加载中...