首页 > 其他分享 >Good Bye 2022: 2023 is NEAR D

Good Bye 2022: 2023 is NEAR D

时间:2022-12-31 16:55:43浏览次数:68  
标签:Good int 我们 pb NEAR pa Bye find loop

D. Koxia and Game

tilian
很容易发现就是我们要让每个数字都double choice一次才能得到答案
比如第一个样例
我们发现1 1 已经double choice一次过了 所以我们该点可以搞任何的数字就是n种选择
我们发现第二个和第三个就像一个环一样 确定了一个其他所有都被确定了就只有两种情况
而且我们会发现有些像链一样 (我们把a[i]和b[i]用边连起来)
1 2 3
2 3 4
这种是没有解的 但是他要是挂在一个环上的话就有解了
1 2 3 4
2 3 4 4
所以我们会发现一个连通块必须有几个点 就要有几条边
这样我们就记录一下 谁是自环 每个连通块有几个点几个边即可

int n,p[N],v[N],e[N],loop[N],a[N],b[N];
int find(int x){
    if(p[x]!=x)p[x]=find(p[x]);
    return p[x];
}
void merge(int x,int y){
    int pa=find(x),pb=find(y);
    e[pa]+=e[pb];
    v[pa]+=v[pb];
    p[pb]=p[pa];
    loop[pa]|=loop[pb];
}
void solve(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)cin>>b[i];
    for(int i=1;i<=n;i++){
        loop[i]=e[i]=0;
        p[i]=i;
        v[i]=1;
    }
    for(int i=1;i<=n;i++){
        int pa=find(a[i]),pb=find(b[i]);
        if(pa!=pb)merge(pa,pb);
        e[find(a[i])]++;
        if(a[i]==b[i])loop[pa]=1;
    }
    vector<int>mp(n+1);
    int ans=1;
    for(int i=1;i<=n;i++){
        int x=find(i);
        if(mp[x])continue;
        if(e[x]!=v[x])ans=0;
        if(loop[x])(ans*=n)%=mod;
        else (ans*=2)%=mod;
        mp[x]++;
    }
    cout<<ans<<endl;
}

标签:Good,int,我们,pb,NEAR,pa,Bye,find,loop
From: https://www.cnblogs.com/ycllz/p/17016930.html

相关文章

  • Good Bye 2022: 2023 is NEAR
    KoxiaandNumberTheory(鸽巢原理)题目大意给定一个长度为\(n(2\len\le100)\)的数组\((1\lea[i]\le10^{18})\),问是否存在一个正整数x,使得对于任意的i,j都满足\(gc......
  • Codeforces Good Bye 2022 CF 1770 A~E 题解
    题目链接A.KoxiaandWhiteboards注意每一步替换操作都是强制的,而不是可选的。所以就用一个multiset维护所有的数,每次选一个最小的替换掉即可。时间复杂度\(O(nlogn)\)......
  • Good Bye 2022: 2023 is NEAR
    D.KoxiaandGame记\(ans=\prod\limits_{i=1}^{i=n}add_i\),\(add_i\)就是\(i\)的贡献。记数字\(i\)只和自己连起来称为\(i\)自环。例如:123123则称\(1......
  • Codeforces Good Bye 2022: 2023 is NEAR
    题目传送门:CodeforcesGoodBye2022:2023isNEAR。目录A.KoxiaandWhiteboardsA.KoxiaandWhiteboardsB.KoxiaandPermutationC.KoxiaandNumberTheoryD.Kox......
  • 数字滤波器--线性滤波(Linear Filter)
    目录​​一、什么是数字滤波器​​​​二、数字滤波器的几个重要的基础概念​​​​三、数字滤波器的基本单元​​​​differentiator 差分器​​​​Integrator 积分器......
  • Bye 2019,Hi ,我的鼠年 2020 ~
    这是一条很奇怪的前言~说句实在话,回顾2019,展望2020,早想动笔,却深陷回忆。2019,经历了太多,太多。时间过的真快,眨眼间,就仿佛在昨天。曾经的我们,无数次的畅想未来,未来的未来,未......
  • 个人翻译Introduction to Linear Algebra, 5th Edition 9.3节(仅用于交流学习,非盈利)
    本书的翻译仅为交流学习!才疏学浅,不当的地方还望指正。请勿于其它用途!PDF文件 链接一:  https://pan.baidu.com/s/1nCLx5LniFaNtMvZgvoslcQ提取码:5u67 链接二:https......
  • JUnit + Mockito 单元测试(二)(good)
     importorg.junit.Test;importorg.mockito.Matchers;importorg.mockito.Mockito;importjava.util.List;importjava.util.Map;importstaticorg.hamcrest.CoreMatcher......
  • 几种渐变CSS写法:线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向径向渐变(Rad
    CSS3渐变(gradients)可以让你在多个指定的颜色之间显示两个过渡。以前,你使用图像的效果减少了这些。但是,通过CSS3实现(实现渐变,实现下载)的效果。必须使用的效果,你可以在使用......
  • MyBatis good
    增加下面的配置,就会把spring-mybatis中debug的日志也打印出来mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImplCreatinganewSqlSessionSqlS......