zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
    
  • 相关阅读:
    [Noip2017]逛公园
    [NOI2005]瑰丽华尔兹
    codeforces 558E A Simple Task
    bzoj1812 riv(树形背包)
    bzoj 1009 GT考试
    bzoj1030 文本生成器 Trie图+dp
    bzoj1500 维修数列(splay)
    [NOI2008]假面舞会
    测试用例的基本知识
    使用Xmind编写测试用例
  • 原文地址:https://www.cnblogs.com/OvOq/p/14828522.html
Copyright © 2011-2022 走看看