第八个点一直TLE的看这里

P1983 [NOIP2013 普及组] 车站分级

misaka0111 @ 2017-09-23 18:43:36

这个点TLE有两个可能的原因。一个是不停的加重边,开个二维数组判重,没有加的时候再加。另一个是读入建图的时候,循环顺序一定要对,这个问题狠狠地坑了我QAQ。假如temp数组为停的车站,is数组为第j个车站有没有停,那么一定要这么写循环

for (int j = temp[1]; j < temp[s]; j++)
{
    if (is[j])
        continue;
    for (int k = 1; k <= s; k++)
    {
        if (!G[j][temp[k]])
        {
            G[j][temp[k]] = 1;
            add(j, temp[k]);
            deg[temp[k]]++;
        }
    }
}

而不是

for (int j = 1; j <= s; j++)
{
    for (int k = temp[1]; k < temp[s]; k++)
    {
        if (!is[k] && !G[k][temp[j]])
        {
            G[k][temp[j]] = 1;
            add(k, temp[j]);
            deg[temp[j]]++;
        }
    }
}

我调这个调了一下午QAQ


by maruize @ 2019-10-23 22:31:01


by maruize @ 2019-10-23 22:31:57

why


by Perfonster @ 2020-08-12 15:17:08

tql,解决了我的问题,谢谢!!!


|