用Java刷OJ超时怎么办?原因分析及解决方式

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+&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值