首页 > 其他分享 >E. Disrupting Communications

E. Disrupting Communications

时间:2024-11-09 11:30:24浏览次数:1  
标签:val fa int 100005 Communications n1 Disrupting mod

  • 注意可能出现dpx+1在模意义下为0的情况,此时需要额外维护0的个数而不能求逆元
  • 记f[x]表示x子树内包含x的连通子图的个数,g[x]表示全树包含x的连通子图的个数,由于子树的限制,所有fx互斥 【子树互斥模型】
  • 求出f[x]后换根DP求出g[x]。答案即为u-LCA(u,v)上f的和+g[LCA(u,v)]+v-LCA(u,v)上f的和,注意整个过程都和s[x]无关,显然一个节点并不能和一种划分一一对应
  • 【关于计数类的题目的迷思】朴素算法很难实现,样例很弱,手造样例也很麻烦。这种情况下或许只能更多地把它当做一道数学题做
点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int mod=998244353;
vector<int>a[100005];
int d[100005],h[100005],z[100005],s[100005],fa[100005],zero[100005];
long long f[100005],g[100005],val[100005],sum[100005],inv[100005];
int power(int n,int p)
{
    if(p==0)
    {
        return 1;
    }
    long long tmp=power(n,p/2);
    if(p%2==0)
    {
        return tmp*tmp%mod;
    }
    return tmp*tmp%mod*n%mod;
}
void dfs1(int n1)
{
    s[n1]=1;
    z[n1]=0;
    f[n1]=val[n1]=1;
    zero[n1]=0;
    for(int i=0;i<a[n1].size();i++)
    {
        d[a[n1][i]]=d[n1]+1;
        dfs1(a[n1][i]);
        s[n1]+=s[a[n1][i]];
        f[n1]=f[n1]*(f[a[n1][i]]+1)%mod;
        if((f[a[n1][i]]+1)%mod)
        {
            val[n1]=val[n1]*(f[a[n1][i]]+1)%mod;
        }
        else
        {
            zero[n1]++;
        }
        if(s[a[n1][i]]>s[z[n1]])
        {
            z[n1]=a[n1][i];
        }
    }
    inv[n1]=power(f[n1]+1,998244351);
}
void dfs2(int n1)
{
    if(z[n1])
    {
        h[z[n1]]=h[n1];
        dfs2(z[n1]);
    }
    sum[n1]=(sum[z[n1]]+f[n1])%mod;
    for(int i=0;i<a[n1].size();i++)
    {
        if(a[n1][i]!=z[n1])
        {
            h[a[n1][i]]=a[n1][i];
            dfs2(a[n1][i]);
        }
    }
}
void dp(int n1,int fa)
{
    if(fa)
    {
        if((f[n1]+1)%mod)
        {
            g[n1]=f[n1]*(g[fa]*inv[n1]%mod+1)%mod;
            if((g[fa]*inv[n1]%mod+1)%mod)
            {
                val[n1]=val[n1]*(g[fa]*inv[n1]%mod+1)%mod;
            }
            else
            {
                zero[n1]++;
            }
        }
        else
        {
            if(zero[fa]>1)
            {
                g[n1]=0;
                zero[n1]++;
            }
            else
            {
                g[n1]=f[n1]*(val[fa]+1)%mod;
                if((val[fa]+1)%mod)
                {
                    val[n1]=val[n1]*(val[fa]+1)%mod;
                }
                else
                {
                    zero[n1]++;
                }
            }
        }
    }
    for(int i=0;i<a[n1].size();i++)
    {
        dp(a[n1][i],n1);
    }
}
int main()
{
    //freopen("example.in","r",stdin);
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int T;
    cin >> T;
    while(T--)
    {
        int n,q;
        cin >> n >> q;
        for(int i=1;i<=n;i++)
        {
            a[i].clear();
        }
        for(int i=2;i<=n;i++)
        {
            cin >> fa[i];
            a[fa[i]].push_back(i);
        }
        d[1]=1;
        dfs1(1);
        g[1]=f[1];
        dp(1,0);
        h[1]=1;
        dfs2(1);
        for(int i=1;i<=q;i++)
        {
            long long ans=0;
            int u,v,x;
            cin >> u >> v;
            while(h[u]!=h[v])
            {
                if(d[h[u]]<d[h[v]])
                {
                    swap(u,v);
                }
                ans=(ans+sum[h[u]]-sum[z[u]])%mod;
                u=fa[h[u]];
            }
            if(d[u]<d[v])
            {
                swap(u,v);
            }
            x=v;
            ans=(ans+sum[z[v]]-sum[z[u]])%mod;
            ans=(ans+g[x])%mod;
            cout<<(ans+mod)%mod<<"\n";
        }
    }
    return 0;
}

标签:val,fa,int,100005,Communications,n1,Disrupting,mod
From: https://www.cnblogs.com/watersail/p/18536486

相关文章

  • 第六届国际科技创新学术交流大会 暨通信、信息系统和软件工程学术会议(CISSE 2024)
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus大会时间:2024年12月6-8日大会地点:中国-广州三、大会介绍通信、信息系统与软件工程学术会议(CI......
  • DCN-Digital Communications and Networks
    @目录一、征稿简介二、重要信息三、服务简述四、投稿须知一、征稿简介二、重要信息期刊官网:https://ais.cn/u/3eEJNv三、服务简述人工智能原生网络6G通信网络中的人工智能自主网络管理网络功能虚拟化(NFV)软件定义网络(SDN)网络机器学习无线联合学习动态频谱管理网......
  • ENGN4536/6536 - Wireless Communications
    ENGN4536/6536-Wireless CommunicationsAIMiniProject:DeepLearningforPAPRReductionin OFDMGoalInthisproject,youareexpectedtoadoptadeeplearningtooltoreducethepeak-to-averagepowerratio (PAPR) in an emerging wireless technol......
  • INFO20003 SQL Requesting Communications
    INFO20003S22024–ASSIGNMENT2v1.41INFO20003Semester2,2024Assignment2:SQLDue:Week8-Sunday15thSeptember2024,5:59pmMelbourneTime.Submission-ViaLMShttps://canvas.lms.unimelb.edu.au/Case:“Slarc”App“Slarc”:SuperLovelyAppfor......
  • CUCM(Cisco Unified Communications Manager)思科统一通信增值应用开发
    公司承接CUCM(CiscoUnifiedCommunicationsManager)思科统一通信增值应用开发包含思科UC以及WIFI相关产品的应用开发:CiscoUnifiedCommunicationsManagerCiscoMeetingServerCiscoTelepresenceDMPJabberMerakiWLCCUCM相关标准功能模块,基于思科品牌ipphoneActive......
  • Nature Communications 单细胞算法 scDist,教你怎么找到重要的细胞亚群与基因!
    生信碱移scDist: 寻找关键细胞亚群与基因的方法单细胞RNA测序(scRNA-seq)使我们能够研究受药物治疗、感染以及癌症等疾病中关键的细胞亚群。为了找到可能影响疾病的细胞亚群乃至基因,我们常常去比较两个或多个组之间显著差异的细胞类型。这里"显著差异"的定义可以是不同方面的,......
  • 2024年6G通信与太赫兹技术世界研讨会(6GCTT 2024) 2024 World Symposium on 6G Communic
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus2024年8月23-25日,西安三、大会介绍随着互联网和物联网科技的高速发展,6G通......
  • Nature Communications|一种超快响应的电子皮肤(柔性压力传感/界面调控/电子皮肤/柔性
    南方科技大学郭传飞(ChuanFeiGuo)和中国科学技术大学王柳(LiuWang)课题组,在《NatureCommunications》上发布了一篇题为“Ultrafastpiezocapacitivesoftpressuresensorswithover10kHzbandwidthviabondedmicrostructuredinterfaces”的论文。论文内容如下:一、摘......
  • Cisco Unified Communications Manager (CallManager) 15.0 SU1 - 统一通信与协作
    CiscoUnifiedCommunicationsManager(CallManager)15.0SU1-统一通信与协作思科统一通信管理器(CallManager)请访问原文链接:https://sysin.org/blog/cisco-ucm-15/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科统一通信管理器企业统一通信和协作借助......
  • Communications link failureThe last packet successfully received from the server
    出现这种错误的大致情况如下:网络问题:可能存在网络中断、网络延迟或者网络拥塞等问题,导致应用程序无法与数据库建立稳定的连接。可以通过检查网络连接是否稳定来解决这个问题。数据库服务器问题:数据库服务器可能出现了问题,例如数据库服务未启动、数据库服务器资源不足、数......