zoukankan      html  css  js  c++  java
  • [NOI2002]银河英雄传说

    甩链接

    我还是太弱了(qnq).

    稍微总结一下吧:维护前缀和,查询的时候做差,中途(Merge)的时候我们只需要改当前父指针即可,在每次(find)的时候更新(sum)数组即可。

    (wx)大佬给的思路,我的垃圾思路只有(12)

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int f[30010],sum[30010],tot[30010];
    int find(int x)
    {
        if(f[x]==x)return x;
        int p1=f[x],p2=sum[x];
        f[x]=find(f[x]);
        if(p1!=f[x])sum[x]=p2+sum[p1];
        return f[x];
    }
    int main()
    {
        cin.sync_with_stdio(false);
        for(int i=1;i<=30010;i++)
        {
            f[i]=i;
            sum[i]=1;
            tot[i]=1;
        }
        int t;
        cin>>t;
        char in;
        int a,b;
        for(int i=1;i<=t;i++)
        {
            cin>>in>>a>>b;
            int f1=find(a),f2=find(b);
            if(in=='M')
            {
                f[f1]=f2;
                sum[f1]=tot[f2];
                tot[f2]+=tot[f1];
            }
            if(in=='C')
            {
                if(f1==f2)
                {
                    int p1=sum[a],p2=sum[b];
                    if(a==f1)p1=0;
                    if(b==f2)p2=0;
                    printf("%d
    ",max(p1-p2,p2-p1)-1);
                    continue;
                }
                printf("-1
    ");
            }
        }
    }
    
  • 相关阅读:
    JVM字节码(七)
    JVM字节码(六)
    JVM字节码(五)
    JVM字节码(四)
    JVM字节码(三)
    JVM字节码(二)
    JVM字节码(一)
    JVM类加载器(五)
    JVM类加载器(四)
    php之 人员的权限管理
  • 原文地址:https://www.cnblogs.com/pks-t/p/9063742.html
Copyright © 2011-2022 走看看