zoukankan      html  css  js  c++  java
  • 牛客练习赛6 B-点权和

    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    #include <string.h>
    using namespace std;
    #define maxn 100010
    #define LL long long
    #define mod 19260817
    int f[maxn] ;
    int sz[maxn];
    LL sum[maxn],tag[maxn],sontag[maxn];
    int main()
    {
    #ifdef shuaishuai
        freopen("in.txt","r",stdin );
        //freopen("out.txt","w",stdout);
    #endif // shuaishuai
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=2,x;i<=n;i++)
        {
            scanf("%d",&x);
            f[i]=x;sz[x]++;sz[i]++;
        }
        LL ans=0;
        for(LL i=1;i<=m;i++)
        {
            int x;
            scanf("%d",&x);
            sum[x]+=sz[x]+1;
            sum[f[x]]+=2;
            sum[f[f[x]]]++;
            tag[x]++;
            sontag[f[x]]++;
            LL t=0;//巧妙的容斥- -
            t=(t+sum[x])%mod;//对x操作,x的子节点操作,x的子节点的子节点操作的贡献和
            t=(t+tag[f[x]]*2)%mod;//对fx操作给fx和x带来的累计贡献
            t=(t+tag[f[f[x]]])%mod;//对ffx操作给fx带来的贡献
            t=(t+sontag[f[x]]-tag[x])%mod;//fx子节点中除去x的贡献
            ans=(ans+i*t)%mod;
        }
        printf("%lld
    ",ans );
        return 0;
    }
  • 相关阅读:
    Hadoop IO
    HDFS
    简介
    队列
    classLoader和Class.forName的区别
    String为什么是final类型的
    Fabric
    超级账本——面向企业的分布式账本
    以太坊
    pycharm破解教程
  • 原文地址:https://www.cnblogs.com/MeowMeowMeow/p/7854312.html
Copyright © 2011-2022 走看看