zoukankan      html  css  js  c++  java
  • 小胖的奇偶

    初看此题之时,只感觉麻烦至极,要从一个个关系中又推出其他关系,烦死人啊!!!然后在网上找到了一种神奇的用了HAXU的解法,超级妙啊!!!

    用f[x]表示了0到x的奇偶,然后设f[x+mod]=f[x]^1。这样就很好判断啊!!!太6了。。。

    #include<bits/stdc++.h>
    #define mod 1000007
    using namespace std;
    int haxu[mod],f[2*mod],n,m,k;
    int ha(int x)
    {
        int t = x % mod;
        while(haxu[t]!=-1 && haxu[t]!=x)
            t = (t+1) % mod;
        haxu[t]=x;
        return t;    
    }
    int find(int x)
    {
        if(f[x]==x) return x;
        f[x]=find(f[x]);
        return f[x];
    }
    void he(int x,int y)
    {
        int fx=find(x);
        int fy=find(y);
        f[fx]=fy;
    }
    int sum(int x,int y)
    {
        if(find(x)==find(y))
            return 1;
        return 0;
    }
    main(){
        cin>>n>>m;
        for(int i=1;i<=2*mod;i++)
            f[i]=i; 
        memset(haxu,-1,sizeof(haxu));
        for(int i=0;i<m;i++)
        {
            int x,y;
            string c;
            cin>>x>>y>>c;
            int a=ha(x-1);
            int b=ha(y);
            if(c[0]=='e')
            {
                if(sum(a,b+mod))
                {
                    cout<<i;
                    return 0;
                }
                he(a,b);
                he(a+mod,b+mod);
            }
            else
            {
                if(sum(a,b))
                {
                    cout<<i;
                    return 0;
                }
                he(a,b+mod);
                he(a+mod,b);
            }
        }
        cout<<m;
    }
  • 相关阅读:
    nyist_21(三个水杯)(BFS)
    寒假刷题之普通之红与黑
    寒假刷题之普通之变形课
    寒假刷题之普通之最小差
    什么是 Spring Boot
    择业十诫----与内心的渴望同行
    模式窗体中调用父页面Javascript
    二级域名解析
    软件测试
    网狐系统介绍
  • 原文地址:https://www.cnblogs.com/kczno1fans/p/7388604.html
Copyright © 2011-2022 走看看