相同的解决方案,Codechef(Java)上的不同结果

时间:2016-01-06 14:12:31

标签: java sorting

https://www.codechef.com/problems/TSORT/ - 这是要解决的问题

https://www.codechef.com/viewsolution/9110492 - 我的Java解决方案(实施比较排序)

https://www.codechef.com/viewsolution/8599514 - Java中的其他一些人解决方案(他也实施了比较排序)

当我提交我的解决方案时,我得到TLE(超出时间限制),但另一个解决方案获得AC。

造成这种差异的可能原因是什么?

注意:如果解决方案不同,请告诉我代码中的差异和改进方面。

1 个答案:

答案 0 :(得分:1)

有一点需要注意的是(自己的实现)FastScanner类在"其他"中的使用。解。只是从System.in中读取数据而不是等待(就像你的代码那样!)以获得System.in中给出的完整行。

我猜你的解决方案正在等待你的BufferedReader继续行结束 - 但是考虑到测试输入它永远不会。

通过调用BufferedReader.readLine(),您将阻止

a)读取EOF(除非有意,否则不会发生StdIn)或

b)已读取一行(包括该平台的有效行分隔符char)。

您的竞争对手只是从System.in读取了一个大byte[] - 与当时可用的信息一样多。因此可以假设System.in中只有 没有换行符,因此您的代码会被卡住。

赋值中的输入特别显示最后一个int后没有换行符。因此,您可能正在等待更多输入。