2021年河南省赛——I.七便士(思维+并查集)

Posted 海底看不到四季~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年河南省赛——I.七便士(思维+并查集)相关的知识,希望对你有一定的参考价值。

2021年河南省赛——I.七便士(思维+并查集)

原题链接

思路:

可以看出,如果未填充的部分是一条链的话,可以把剩下的都添进去。比如,第一次填倒数第二个,然后移动到倒数第一个,以此类推。
用并查集判的。

代码:

#define PI acos(-1)
const int maxn=1e5+10;
const ll mod=1e9+7;
int g[10][10];
int root[15];

int Find(int x)
{
    if(x!=root[x]) root[x]=Find(root[x]);
    return root[x];
}

int main()
{
    for(int i=1; i<=8; i++)
    {
        int x=(i+2)%8+1,y=(i+4)%8+1;
        g[i][x]=g[x][i]=g[i][y]=g[y][i]=1;
    }
    int T=read;
    while(T--)
    {
        for(int i=1; i<=8; i++) root[i]=i;
        string s;
        cin>>s;
        vector<int>v;
        for(int i=0; i<s.size(); i++)
            if(s[i]==\'0\') v.push_back(i+1);

        bool flag=1;
        for(int i=0; i<v.size(); i++)
            for(int j=0; j<v.size(); j++)
                if(i!=j)
                {
                    if(g[v[i]][v[j]])
                    {
                        int fu=Find(v[i]),fv=Find(v[j]);
                        if(fu!=fv) root[fu]=fv;
                    }
                }
        int cnt=0;
        for(int i=0;i<v.size();i++)
            if(v[i]==Find(v[i])) cnt++;
        if(cnt==1) puts("Yes");
        else puts("No");

    }

    return 0;
}


以上是关于2021年河南省赛——I.七便士(思维+并查集)的主要内容,如果未能解决你的问题,请参考以下文章

第七届河南省赛 题解&&题型分布

2023年天梯赛选拔-部落划分

2021杭州多校第一场KD-Graph(思维+并查集)

2021杭州多校第一场KD-Graph(思维+并查集)

Travel(HDU 5441 2015长春区域赛 带权并查集)

2021年SWPUACM暑假集训day2并查集算法