[bzoj3444][并查集]最后的晚餐

IPsec (主模式,野蛮模式) IPsec vpn的主模式和野蛮模式 阅读详情

Description

【问题背景】
高三的学长们就要离开学校,各奔东西了。某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结。因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起。
【问题描述】
饭店给这些同学提供了一个很长的桌子,除了两头的同学,每一个同学都与两个同学相邻(即坐成一排)。给出所有信息,满足所有人的要求,求安排的方案总数(这个数字可能很大,请输出方案总数取余989381的值,也可能为0)。

Input

输入有m+1行,第一行有两个用空格隔开的正整数n、m,如题所示。接下来的m行,每一行有两个用空格隔开的正整数,第i行为Ai和Bi,表示Ai的暗恋对象为Bi,保证Ai互不相等。

Output

输出只有一行,这一行只有一个数字,如题所示。

Sample Input

4 2

1 2

4 3

Sample Output

8

HINT

【数据范围】

100%的数据,0<n≤500000,1≤Ai,Bi≤n,0≤m≤n,保证没有人自恋。

题解

mmp辣鸡题毁我ac率
搞个并查集,暗恋的人就放在一个并查集里面。表示这个连通块里只能按顺序坐或者反过来坐一次
最后出来的一堆连通块,直接上全排列
那么对付无解的情况
无解就两种方案,第一种出现环了,第二种出现一个人暗恋了三个人
然而还有一种情况,比如a喜欢b同时b也喜欢a。那么这个环就不是无解的!!!

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL mod=989381;
int fa[510000];
int findfa(int x)
{
    if(fa[x]!=x)fa[x]=findfa(fa[x]);
    return fa[x];
}
LL pow_mod(LL a,int b)
{
    LL ans=1;
    while(b)
    {
        if(b%2==1)ans=ans*a%mod;
        a=a*a%mod;b/=2;
    }
    return ans;
}
int n,m;
int T[510000],tt[510000];
int h[510000];
bool vis[510000];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)fa[i]=i;
    bool bk=false;
    memset(vis,false,sizeof(vis));
    memset(T,0,sizeof(T));memset(tt,0,sizeof(tt));
    for(int i=1;i<=m;i++)
    {
        int u,v;
        scanf("%d%d",&u,&v);
        if(tt[v]==u || tt[u]==v)continue;
        tt[u]=v;
        if(T[u]>=2 || T[v]>=2){bk=true;break;}
        int p=findfa(u),q=findfa(v);
        if(p!=q)fa[p]=q;
        else {bk=true;break;}
        T[u]++;T[v]++;
    }
    memset(h,0,sizeof(h));
    if(bk==true)printf("0\n");
    else
    {
        LL cnt=0,tmp=0;
        for(int i=1;i<=n;i++)fa[i]=findfa(i);
        for(int i=1;i<=n;i++){if(fa[i]==i)cnt++;h[fa[i]]++;}
        for(int i=1;i<=n;i++)if(h[i]==1)tmp++;
        LL ret=pow_mod(2,cnt-tmp);
        for(LL i=1;i<=cnt;i++)ret=ret*i%mod;
        printf("%lld\n",ret);
    }
    return 0;
}
知识蒸馏⚗️ | YOLOv5知识蒸馏实战篇 YOLOv5知识蒸馏教程 阅读详情

相关推荐

多智能体强化学习论文——SEAC(NIPS 2020)

存在的问题&研究动机&研究思路 在稀疏奖励的环境下,多智能体的exploration存在效率不足等问题。 在IAC的基础上尝试加入重要性采样,使得每次更新智能体iii的参数时,不再仅仅使用智能体iii的数据,而是使用所有智能体的数据进行智能体iii数据的更新。 对于原始的IAC算法是on-policy的,而SEAC则是off-poligy的。 创新点 在每个智能体iii的actoriactor_iactori​和criticicritic_icritici​的更新过程中,都加入了重要性

我的AI笔记 1207

BZOJ1050(HAOI2006)[旅行comf]--并查集

bzoj1050

Greninja的博客 666

利用GPAC生成MP4文件

GPAC主要针对学生和内容创作者,代表了一个跨平台的多媒体框架,开发人员可以使用它在 LGPL 许可下制作开源媒体。GPAC多媒体框架兼容范围广泛的流行文件类型,从常见格式(如 AVI、MPEG 和 MOV)到复杂格式(如 MPEG-4 系统或 VRML/X3D)和 360 电影。

深之JohnChen的专栏 1772

BZOJ 1854 并查集

这道题和BZOJ上的1191的题目类型差不多,都可以用二分图匹配来做,但是这题的数据范围很大,匈牙利算法的最坏复杂度是N^2的,会TLE,因此我们考虑换一种算法。     我们可以用并查集来维护一些信息,令flag[i]表示值为i的这一次能否通过,我们一个装备当成一条边,连接着两个数值,那么在并查集中它们是一一棵树的情况存在,树是n个点,n-1条边的连通图,那么我们只能选n-1个数值,根结点无法

TSOI_Vergil的博客 399

告别‘打架’的检测头:手把手教你用PyTorch实现YOLOv11解耦头(附完整代码)

本文详细解析了YOLOv11解耦检测头的创新设计与PyTorch实现,通过解耦分类和回归任务,显著提升目标检测性能。文章包含完整的代码实现、架构设计解析及工程调优技巧,帮助开发者深入理解并应用这一先进技术。

weixin_29031057的博客 301

港口集装箱码头运营FlexSim仿真

列队4中的集装箱会根据不同类型的集装箱会放置在不同的堆场,因此根据前面对集装箱设置的标签Type的数值不同,设置不同的发送端口。集装箱到达列队3后,会有70%的集装箱到达堆场,30%的集装箱运出港口,因此在Queue列队3的Flow界面设置按照百分比发送端口,其中70%发送到端口1,即发送到列队4等待进入堆场,30%发送到端口2,即发送至出闸口。通过上述对比表格可以看出,当集卡数量在10的时候,岸桥和场桥的设备利用率达到了最高,当集卡数量为12的时候场桥1和场桥3的利用率有所下降,因此综合考虑。

m0_72514516的博客 1331

bzoj 3910 并查集+LCA

题意:给出一棵树,给定起点和要经过的点的序列,已经经过的点就不去了,即在剩下的点中按照顺序依次去访问还没有访问过的点,问要经过多少条边。 很显然的一个做法就是每当我们走一条路径的时候,就把这条路径上所有点都打上已经被经过的标记,对于一个点,如果它的标记为真则不用再走。 所以复杂度高的原因就是一些点会被来回来去的多次被标记,每次处理的复杂度都是O(n)的 但实际上只要一个点被打上标记就不用再管

Eirlys的博客 735

Impala>Impala安装部署

文章目录1.安装前提2.下载安装包、依赖包3.虚拟机新增磁盘(可选)4.配置本地yum源5.安装Impala6.修改Hadoop、Hive配置7.修改impala配置8.启动、关闭impala服务 1.安装前提 集群提前安装好hadoop,hive。 hive安装包scp在所有需要安装impala的节点上,因为impala需要引用hive的依赖包。 hadoop框架需要支持C程序访问接口,查看下...

qq_44509920的博客 838

bzoj 1104 贪心+并查集

题意:n*m的网格,所有格子都被水淹没,给定一些关键点,求用最少的抽水机抽干所有关键点的水(水的流动遵循连通器原理) 我觉得这道题的真名应该叫做 “被水淹没,不知所措”,考试的时候自己YY出来的好棒棒= =, 蛮好的一道题 经过贪心可知, (1)一定存在一种最优解使所有的水泵都在关键点上 (2)由于水都是从高往低留,所以一定会优先放置高度低的关键点 那么我们将所有关键点按照高度排序,从

Eirlys的博客 582

调用魔搭API出现Please bind your Alibaba Cloud account before use的解决方案

本文主要介绍了调用魔搭API出现Please bind your Alibaba Cloud account before use解决方案,希望能对使用大模型的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

ABAP BDC 处理踩坑笔记:把错误挡在录制之前,把稳定做进每一行 BDCDATA

本文总结了SAP BDC(批输入)开发中的常见问题和解决方案。重点包括:1)理解BDCDATA本质是模拟人工操作而非直接操作数据库;2)数据格式化技巧,如金额、日期、物料号等字段的标准化处理;3)通过CTU_PARAMS参数控制执行环境,确保屏幕尺寸和更新模式一致;4)不要依赖sy-subrc,应通过解析MESSTAB消息判断业务是否成功;5)录制阶段的常见陷阱及解决方法;6)疑难问题的系统性解决思路;7)建议建立完善的错误处理机制,包括日志记录和重跑功能。文章提供了实用的ABAP代码示例和配置建议,帮助开

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 267

bzoj 1116 并查集

Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度 Input 第一行输入n m.1 Output TAK或者NIE 常做POI的同学,应该知道这两个单词的了... 第一眼不冷静的想写

Eirlys的博客 551

科研——ICONIP论文修改和提交

ICONIP说明文档

Blackoutdragon的博客 6647

[并查集+组合数学] bzoj3444: 最后的晚餐

bzoj3444: 最后的晚餐:http://www.lydsy.com/JudgeOnline/problem.php?id=3444 并查集 因为如果一个人只能和两个人相邻 所以如果入度大于2 printf(“0\n”) 如果存在环 printf(“0\n”) 一个家族有两种方案(正反坐) 家族和家族之间也可以换顺序 排列组合一下就ok了 #include &lt;cstdio...

kkkGIGi_qtt 306

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[BZOJ]3444: 最后的晚餐 并查集

Description 【问题背景】 高三的学长们就要离开学校,各奔东西了。某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结。因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起。 【问题描述】 饭店给这些同学提供了一个很长的桌子,除了两头的同学,每一个同学都与两个同学相邻(即坐成一排)。给出所有信息,满足所有人的要求,求安排的方案总数(这个数字可能很大,请输出方案总数取余

TYB的博客 436

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

bzoj 3444 最后的晚餐 (并查集)

题目: n个人排成一排,有m个条件,第i个条件要求ai和bi相邻,求方案数。   【数据范围】 100%的数据,0<n≤500000,1≤Ai,Bi≤n,0≤m≤n,保证没有人自恋。   算法:并查集+组合数 难度:NOIP 题解: 由于要求排成一排,因此如果关系出现了环则无解;而一个位置最多挨着两个,所以deg[x]&gt;3也无解。 那么剩下的就是若干条链和单个点。每一条链的...

01232012的博客 273

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【bzoj3444】最后的晚餐 并查集

题目描述 n个人排成一排,有m个条件,第i个条件要求ai和bi相邻,求方案数。 输入 输入有m+1行,第一行有两个用空格隔开的正整数n、m,如题所示。接下来的m行,每一行有两个用空格隔开的正整数,第i行为Ai和Bi,表示Ai的暗恋对象为Bi,保证Ai互不相等。 输出 输出只有一行,这一行只有一个数字,如题所示。 样例输入 4 2 1 2 4 3 样例输出 8 ...

weixin_30532837的博客 95

BZOJ[3444]最后的晚餐 并查集

题目链接 把一组x,yx,yx,y看做一条边 因为是在一排,所以出现环就无解;又因为左右一共两个位置,所以一个点度数大于2也无解 然后就是一堆链的问题,对于长度为1的链,链内排列只有一种;对于其他的链,有正反两种 然后记得再算上这些链的全排列 代码如下: #include&lt;ctype.h&gt; #include&lt;cstdio&gt; #define N 500050 #d...

谁能代表肯德基 422

[BZOJ3444]最后的晚餐(并查集+组合数学)

传送门 用并查集维护关系,注意顺着可以,逆着也可以,所以最后统计答案要算二的幂 然后注意判断无解的情况: 1、显而易见的,一个人不能同时喜欢三个人 2、成长度大于2的环 3、注意在2中如果两个人互相喜欢是可以的! 累计答案用全排列(也就是f(n)=n!),因为绕着圈子怎么坐都行嘛。 #include&lt;cstdio&gt; #include&lt;iostream&gt;...

私は Mocha!! 475

BZOJ3444 最后的晚餐(并查集)

  容易发现只要图中有非链部分则无解。剩下就非常简单了。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace s...

weixin_30248399的博客 101

bzoj3444: 最后的晚餐(并查集+组合数学)

3444: 最后的晚餐 题目:传送门 题解:    考虑有解的情况:    直接上并查集,同一个联通块里的人一定要坐在一起的。不难发现其实对于每个联通块最多就只有两种排列方式,那就直接把大于等于两个人的联通块先去做快速幂,然后直接看成cnt个数来全排列。    对付无解的情况:    1、不难想到,有环就无解。    2、深入想想,一个人最多和两个暗恋对象坐在...

weixin_30268071的博客 179

[bzoj3444]最后的晚餐

[bzoj3444]最后的晚餐 我们在A想与B坐时把A与B连接起来(去掉重边),可以发现答案不为0的条件是原图没有环并且原图每个点的度数都小于3 之后发现每个联通块都有两种排列方式,单个的点有一种排列方式,而点/联通块之间的排序是互不影响的。设联通块个数为n,单个的点个数为m,那么答案为 ( m + n ) ! * pow ( 2 , n ) 联通块可以用并查集维护,并且可以判断环(建...

jerome_wei的博客 420

【BZOJ3444】最后的晚餐 乱搞

【BZOJ3444】最后的晚餐 Description 【问题背景】 高三的学长们就要离开学校,各奔东西了。某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结。因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起。 【问题描述】 饭店给这些同学提供了一个很长的桌子,除了两头的同学,每一个同学都与两个同学相邻(即坐成一排)。给出所有信息,满足所有人的要求,求安排的方案总数(这个数字可...

weixin_30384217的博客 82

bzoj3444: 最后的晚餐(并查集+组合数学)

题目传送门 。 解法: 并查集维护要挨在一起的人啊。 假设现在有tt段人要挨在一起。 然后这tt段人一共有t个人。 那么其实只有n-t+tt个点在参与排序。 全排列就好。 然后每一段都可以倒过来。 所以最后要乘2^tt 判0其实蛮好判断。 如果一个点的度&gt;2的话那么输出0 或者当前这两个点已经在同一个集里面的话那肯定是冲突的啦(这是在我想了很多组数据猛然发现的) 代...

Hanks_o的博客 408

BZOJ3444: 最后的晚餐

【问题背景】 高三的学长们就要离开学校,各奔东西了。某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结。因为有m名学生偷偷找他,要求和自己暗恋的同学坐在一起。 【问题描述】 饭店给这些同学提供了一个很长的桌子,除了两头的同学,每一个同学都与两个同学相邻(即坐成一排)。给出所有信息,满足所有人的要求,求安排的方案总数(这个数字可能很大,请输出方案总数取余989381的值,也可能为0)

Unknown 1862

【bzoj3444】最后的晚餐 乱搞

不在一个联通块里的肯定不影响,最后组合数算一下就可以 问题在于同一个联通块里有多少种排法 这道题表面上是有向边,实际上是无向边,因为要强制坐在一起 一个点的度数最多为2,且如果出现长度大于2的环则无解 那么就是说没有环喽,也就是每个点都在一条链上 现在问题就是一条链有多少种排法,这个问题很明显吧,就是等于2呀 ans=(cnt+cnt')!*(2^cnt) cnt表示链的数量,cnt

Oxer的专栏 1002
上一篇: [bzoj4029][贪心]定价
下一篇: [bzoj3442][网络流-费用流]学习小组
Rose_max
博客等级 码龄10年 97粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值