Java超时原因?
又是Java超时。
PAT不给Java延时,简直欺负Java选手。因为Java本身底层的一些原因,编译、运行起来会比其他语言慢一些。有很多其他OJ都放宽Java时间限制了。
以后除非特殊情况(比如大数计算,用Java开挂),不用Java做题了…
那为啥PAT不放宽Java时间限制?
也可能是因为JDK提供的现成的方法太多、容易偷懒,而语言只是工具,重要的是算法。
可能PAT希望考试更加公平,避免因为语言不同而造成的便捷,避免大家因为过多的依赖语言的特性,而忽略了算法设计的重要性。毕竟,如果已有JDK写好的方法的话,就不用重复造轮子了。
超时怎么解决?
1、用BufferedReader
替换Snanner
作为输入
2、一般对于100ms时间限制的题目,基本ac不了,哪怕优化得再好。因为很多乙级题目运行时长(该死的jvm启动)在100ms上下,运气好ac的多,运气差全超时!
3、200ms以上的题目,若是运行超时,那就请不要用暴力破解。
4、如果还是超时的话,建议换语言。官方说明:选择合适的语言也是一种技巧,所以不给你java放宽时间限制
!
附:官方说明
- PTA官网提交界面的“帮助”给出的常见问题解答如下
*我应该从哪里读输入,另外应该输出到哪里?
如果没有特别说明,你的程序应该从标准输入(stdin,传统意义上的“键盘”)读入,并输出到标准输出(stdout,传统意义上的“屏幕”),不要使用文件做输入输出。由于系统是在你的程序运行结束后开始检查输出是否是正确的,对于有多组测试数据的输入,可以全部读入之后再输出,也可以处理一组测试数据就输出一组。
*为什么提交后弹出的窗口一直显示“等待评测”?
提交后即刻弹出的窗口不会自动更新状态。如果看到“等待评测”,请关闭该窗口,去“提交列表”中找到自己的提交,点击分数链接,即可查看详细结果。
*为什么我的程序交在这里得到编译错误,而我在自己的机器上已经编译通过了?
本系统所使用的编译器和你在自己机器上使用的可能有区别,请留意几个常见的地方:
本系统是 64 位 Linux 系统,使用的编译器版本和编译参数可以参见编译器帮助
Java 代码需使用 Main 作为主类名
Visual C++ 6.0 和 Turbo C+&