这题理论上阈值设置 sqrt(N) 时间复杂度更均匀,但实际上这样做大概率会 TLE or MLE,但是改成 sqrt(N)/2 就轻松过了。
经测试,以蒟蒻代码为例,设置 sqrt(N) 会 MLE #18且 900+ ms ,设置 sqrt(N)/2 就是 608ms, 237400KB。设置 sqrt(N)/4 就是 420ms,138400KB。 显然一定范围内阈值越小越优。
具体原因的话,大概是随机数据出现大于阈值长度的集合很少,同时阈值以下的集合处理要开更多的空间,导致实际时空分布不均。
又是一次实践战胜理论(雾)