HACK
查看原帖
HACK
522373
Displace_楼主2022/7/3 22:03

题解讨论区_tourist_和Verdandi的代码有细节错误,无法通过此代码生成的数据。

例如_tourist_的代码在此处:

if(2*dep[pos]>rest)
{
    rest/=2;
    pos=S[now].lower_bound(mk(rest,0))->second;
    vector<int> V; V.clear();
    for(int i=0;i<(int)v[pos].size();i++) 
    {
        int to=v[pos][i];
        if(to==fa[pos]||vis[to]) continue;
        V.push_back(to);
    }
    if((int)V.size()<2) V.push_back(pos);
    printf("%d %d\n",V[0],V[1]); vis[V[0]]=1; vis[V[1]]=1;
    rest-=dep[pos];
    break;
}

暴力遍历了pos节点的直接儿子,因为在每次操作后没有删除选出来的节点,产生了时间复杂度上的错误。

hack数据生成方式:造了一棵以1为根,1的直接儿子为2和3,2的直接儿子个数为 n32\frac{n-3}{2},3的直接儿子个数为 n32+1\frac{n-3}{2}+1的树。

2022/7/3 22:03
加载中...