📜  在线法官的工作方式以及如何避免超过期限的问题?

📅  最后修改于: 2021-06-25 19:39:35             🧑  作者: Mango

在本文中,您将获得在线法官的工作方式的同意,并且本文将讨论编码人员在解决在线平台上的问题时在某个时间点遇到的非常令人沮丧的错误Time Limit Exceed错误。本文主要讨论三件事:

  • 在线法官如何工作?
  • 我们为什么获得TLE?
  • 如何避免TLE?

在线法官如何工作?

有各种在线法官Hackerrank,HackerEarth和Codechef。所有这些都有各自的评估提交的算法和系统。让我们考虑一个在线法官,他正在接受针对给定问题的提交。对于此提交,法官已经加载了一些输入和一些输出文件。法官将提交的内容交给处理者,该处理者有一定的处理限制。假设处理器在1秒钟内可以执行10 ^ 8个操作。现在,在提交程序时在内部发生的事情是程序将执行并从处理器获取输入,并使用其中已加载的测试用例来验证输出。如果匹配,则表示答案正确,但有时在执行过程中,如果程序花费的时间超过了所需的时间限制,则会提示用户时间限制超出错误。例如,如果所需的限制是1秒,并且您的程序花费了1秒钟以上的时间来执行,那么您的法官将发出kill命令,您的输出将被杀死,并且在输出中,您将获得Time Limit Exceeded(Optimize Your代码) 。这就是在线法官的工作方式。

为什么我们获得TLE?

当您的算法没有达到要求的效率时,您将获得TLE,因此其想法是在有限的时间内完成处理。假设您正在计算一个数字是否为质数,并且该数字的阶数为10 ^ 18。如果您使用的是O(n)算法,则势必会获得TLE;如果您使用的是O(log N)算法,那么您将不会获得TLE。以下是TLE错误的一些常见原因…

  • 在线法官对时间有一些限制,并且不允许您在该时间限制后处理指令。如果您花费的时间超过指定的时间限制,则将显示TLE错误。
  • TLE错误还取决于服务器体系结构,操作系统和算法的复杂性。对于不同的平台,服务器体系结构是不同的,并且代码的执行速度在每台服务器上都不同。
  • 如果程序员使用慢速的方法在代码中读取和写入输入,则将给您一个TLE错误。

如何避免TLE?

1.分析约束:如果时间限制为1秒,则您的处理器能够执行10 ^ 8个操作。

2.选择更快的输入和输出方法。例如:

  • 在Java使用缓冲读取器,请勿使用扫描器
  • 在C++中,使用scanf / printf代替cin / cout,
  • 在Python使用这两个语句来加快执行速度
import psyco
psyco.full()

3.如果N <= 100,则您的程序不得包含4个嵌套循环。

4.有时太多的嵌套循环会使您的程序变慢。因此,最好根据问题中已指定的输入界限的指令来优化代码并减少循环数。因此,请仔细阅读代码中的界限,并根据该界限编写程序。

5.优化您的算法,或尝试使用其他数据结构为问题陈述找到其他解决方案。

俗话说,经验是最好的老师。您对算法进行编码的次数越多,编码中的怪胎就越有效。

重要链接:如何克服超过时限(TLE)?

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。