gpt4 book ai didi

c - 在线评判超过时间限制

转载 作者:行者123 更新时间:2023-11-30 20:24:53 25 4
gpt4 key购买 nike

今天我尝试了在线编程竞赛 CodeChef 。当我尝试提交答案时,我收到“时间超出”警告。给出的时间限制是1秒。当我在我的电脑上编译它时,它是瞬时的,没有延迟,但是当我尝试在网站 IDE 中编译相同的源代码时,它给了我 5 秒!这怎么可能?在线比赛中的时间限制是什么意思?是编译时间还是程序启动到终止的时间(即编译+用户输入+输出)?

检查问题 here

我的代码 - C

#include<stdio.h>
void sort();
int count = 0,health[500];

int main()
{
int terror,test,i=0,h = 0;
printf("\nTest cases: ");
scanf("%d",&test);
for( h = 1 ; h <= test ; h++)
{
i=0;
printf("\nTerrorists: ");
scanf("%d",&terror);
while(terror > i)
{
scanf("%d",&health[i]);
i++;
count++;
}
if(i%2 != 0)
{
printf("\nNO");
}
else
{
sort();
int f=0,l=count,v=count,middle = (count/2)+1,j=0,sum1=0,sum2=0;
for(j=0;j<=middle;j++)
{
sum1 += health[f]+health[l];
f++;l--;
sum2 += health[j+(middle/2)]+ health[v-(middle/2)];
v--;
}
if (sum1 == sum2)
{
printf("\nYES");
}
else
{
printf("\nNO",);
}

}
}
return 0 ;
}

void sort()
{
int i , j , a;
for (i = 0; i < count; ++i)
{
for (j = i + 1; j < count; ++j)
{
if (health[i] > health[j])
{
a = health[i];
health[i] = health[j];
health[j] = a;
}
}
}
}

那么,你能解释一下两件事吗

1) 在线比赛中的时间限制是什么意思?是编译时间还是程序启动到终止所用的时间(即编译+用户输入+输出)?

2) 我如何优化我的代码以避免将来发生 TLE。建议对上述代码进行一些更正。

谢谢。

最佳答案

您问了两个问题:

<强>1。在线比赛中的时间限制意味着什么?

是执行时间,不是编译时间。无论如何,编译时间通常是微不足道的。

<强>2。如何优化我的代码以避免将来发生 TLE?

通过使用clock()自行为程序计时。如果您无法在自己的计算机上满足时间要求,请不要提交答案。如果您的计算机速度较慢,您可以通过将结果与您自己的时间进行比较,从成功的答案中了解性能比。

这是一种方法。

#include <stdio.h>
#define TIMING 1 // conditional

#if TIMING > 0
#include <time.h>
clock_t start, elap;
#endif

int main()
{
#if TIMING > 0
start = clock();
#endif

// solve the problem here
// mycode...

#if TIMING > 0
elap = clock() - start;
printf("Time = %f seconds\n", (double)elap / CLOCKS_PER_SEC);
#endif

return 0;
}

关于c - 在线评判超过时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com