• bzoj1063: [Noi2008]道路设计


    一眼题,就是treedp,第一问很好做啊!看来是道水题!

    第二问?两维咯,一维点,一维非偏爱个数或者有多少个偏爱咯

    一眨眼一上午,准备精A。。。C,三维!?

    好吧,为啥WA10+!?

    还有mod!还有判断联通!

    说多都是泪。。(本来想用自己的努力AC不被D的)

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    typedef long long LL;
    int mod;
    struct node
    {
        int x,y,next;
    }a[210000];int len,last[110000];
    void ins(int x,int y)
    {
        len++;
        a[len].x=x;a[len].y=y;
        a[len].next=last[x];last[x]=len;
    }
    int fa[110000];
    int findfa(int x)
    {
        if(x==fa[x])return x;
        fa[x]=findfa(fa[x]);return fa[x];
    }
    LL MOD(LL x)
    {
        if(x%mod!=0)return x%mod;
        if(x!=0)return mod;
        return 0;
    }
    LL g[110000][20][3];
    void treeDP(int x,int mx,int f)
    {
        g[x][mx][0]=1;g[x][mx][1]=0;g[x][mx][2]=0;
        for(int k=last[x];k;k=a[k].next)
        {
            int y=a[k].y;
            if(y!=f)
            {
                treeDP(y,mx,x);
                LL f1=g[y][mx][0]+g[y][mx][1];
                LL f2;
                if(mx!=0)f2=g[y][mx-1][0]+g[y][mx-1][1]+g[y][mx-1][2];
                if(mx==0)f2=0;
                
                g[x][mx][2]=MOD(f2*g[x][mx][2]+f1*g[x][mx][1]);
                g[x][mx][1]=MOD(f1*g[x][mx][0]+f2*g[x][mx][1]);
                g[x][mx][0]=MOD(g[x][mx][0]*f2);
            }
        }
    }
    int main()
    {
        int n,m,x,y;
        scanf("%d%d%d",&n,&m,&mod);
        for(int i=1;i<=n;i++)fa[i]=i;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&x,&y);
            ins(x,y);ins(y,x);
            int fx=findfa(x),fy=findfa(y);
            fa[fy]=fx;
        }
        for(int i=1;i<=n;i++)
            if(findfa(i)!=findfa(1)){printf("-1
    -1
    ");return 0;}
        memset(g,0,sizeof(g));
        for(int i=0;;i++)
        {
            treeDP(1,i,0);
            if(g[1][i][0]+g[1][i][1]+g[1][i][2]!=0)
            {
                printf("%d
    %lld
    ",i,(g[1][i][0]+g[1][i][1]+g[1][i][2])%mod);
                return 0;
            }
        }
        return 0;
    }
  • 相关阅读:
    数论模板
    HZNU_TI1050 训练实录
    2019 ICPC Asia Xuzhou Regional
    ICPC 2019-2020 North-Western Russia Regional Contest
    2019 ICPC Asia Yinchuan Regional
    2019-2020 ICPC, Asia Jakarta Regional Contest
    The 2019 China Collegiate Programming Contest Harbin Site
    2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest
    Educational Codeforces Round 75
    2018-2019 ACM-ICPC, Asia Dhaka Regional Contest
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/7649983.html
Copyright © 2020-2023  润新知