首先,如果你在弱化版中用了优先队列,优先队列的复杂度是 O(nlogn) 的,而本题的数据范围,n 高达 107,必须用 O(n) 的算法。反正我的想法就是普通队列 + 桶排序。
第二,如果你用了 O(n) 的复杂度,但是 Subtask 4 还是 TLE,那么你可以考虑对你的程序进行一个常数优化,因为这题的时间是 0.5s,如果常数太大也会超时。 一般就是把输入优化了,用快读。我刚才试了一下,只有用快读才能完全通过本题,其他的读入方式,不管是关流同步的 cin 还是 scanf,都会被卡掉。
经过测试发现,如果你用 cin, cout,而且加了
cin.tie(0) -> ios::sync_with_stdio(0);
(这是关闭流同步,加快读入速度的东西),实际上是要比 scanf 快的。当然,换行符一定要用 \n 而不要用 endl,否则你的流同步关了跟没关一个样,而且还可能会输出一些奇奇怪怪的东西。