NOIP 2021

· · 生活·游记

void Zoomy()
{
    for(int i=1;i<=N;i++)
    {
        if(vis[i]) continue;
        if(!check(i))
        {
            st[++top]=i;
            continue;
        }
        for(int j=1;j<=N;j++)
        {
            if(j*i>N) break;
            vis[j*i]=1;
        }
    }
}

不难发现这里的循环变量 i 能取到 N 的值,而且一开始是这样的:

const int N=1e7+1;
bool vis[10000005];

这样是会 \small\colorbox{#52C41A}{\color{#FFF}{AC}} 的,在考场上大样例也过了,对拍也没有问题。

但是马上结束的时候,这个傻逼 看着不爽,就改成:

const int N=1e7+100;
bool vis[10000005];

没错,vis数组没有改。

现在的情况:

\small\colorbox{#E74C3C}{\color{white}{WA}}

\small\colorbox{#9D3DCF}{\color{white}{RE}}

\,\small\colorbox{#52C41A}{\color{white}{AC}}

都有可能发生,但是只有

\small\colorbox{#52C41A}{\color{white}{AC}}

概率最低。

update:

最后 \small\colorbox{#E74C3C}{\color{white}{WA}} 了一半,其他 \small\colorbox{#52C41A}{\color{white}{AC}}