2024年12月GESP真题及题解(C++八级): 排队

2024年12月GESP真题及题解(C++八级): 排队

题目描述

小杨所在班级共有n nn位同学,依次以1 , 2 , … , n 1,2,\dots,n1,2,,n标号。这n nn位同学想排成一行队伍,其中有些同学之间关系非常好,在队伍里需要排在相邻的位置。具体来说,有m mm对这样的关系(m mm是一个非负整数)。当m ≥ 1 m\geq 1m1时,第i ii对关系(1 ≤ i ≤ m 1\leq i\leq m1im)给出a i , b i a_i,b_iai,bi,表示排队时编号为a i a_iai的同学需要排在编号为b i b_ibi的同学前面,并且两人在队伍中相邻。

现在小杨想知道总共有多少种排队方式。由于答案可能很大,你只需要求出答案对10 9 + 7 10^9+7109+7取模的结果。

输入格式

第一行,两个整数n , m n,mn,m,分别表示同学们的数量与关系数量。

接下来m mm行,每行两个整数a i , b i a_i,b_iai,bi,表示一对关系。

输出格式

一行,一个整数,表示答案对10 9 + 7 10^9+7109+7取模的结果。

输入输出样例 1
输入 1
4 2 1 3 2 4
输出 1
2
输入输出样例 2
输入 2
3 0
输出 2
6
输入输出样例 3
输入 3
3 2 1 2 2 1
输出 3
0
说明/提示

对于20 % 20\%20%的测试数据点,保证1 ≤ n ≤ 8 1\leq n\leq 81n80 ≤ m ≤ 10 0\leq m\leq 100m10

对于另外20 % 20\%20%的测试数据点,保证1 ≤ n ≤ 10 3 1\leq n\leq 10^31n1030 ≤ m ≤ 1 0\leq m\leq 10m1

对于所有测试数据点,保证1 ≤ n ≤ 2 × 10 5 1\leq n\leq 2\times 10^51n2×1050 ≤ m ≤ 2 × 10 5 0\leq m\leq 2\times 10^50m2×105

题目分析

这道题是一个排列计数问题,有n nn个人排成一队,给出m mm个约束条件,每个约束条件( a i , b i ) (a_i, b_i)(ai,bi)表示a i a_iai必须排在b i b_ibi的前面且相邻。我们需要计算满足所有约束条件的排队方案数,并对10 9 + 7 10^9+7109+7取模。

如果没有约束条件,方案数就是n ! n!n!。加入约束条件后,我们可以将约束条件视为将两个人绑定成一个“块”,并且块内顺序固定。多个约束条件可能会将更多人绑定成一个更大的块(形成一条链)。最终,整个队伍由若干个块组成,块内部顺序固定,块之间可以任意排列。因此,方案数等于块数的阶乘,前提是约束条件合法。

约束条件合法的要求:

  1. 每个节点最多只能有一个前驱和一个后继(因为队伍是线性的,一个人最多和两个人相邻)。
  2. 不能形成环(否则无法排成直线)。
  3. 约束条件的方向必须一致,不能出现冲突(例如,一个块中不能出现两个不同的顺序要求)。

我们可以用并查集来维护块,同时记录每个节点的前驱和后继。对于每个约束( a , b ) (a, b)(a,b)

  • 如果a aab bb已经在同一个块中,则必须满足a aab bb的直接前驱,否则冲突。
  • 如果不在同一个块,则必须满足a aa是它所在块的最后一个节点(即没有后继),且b bb是它所在块的第一个节点(即没有前驱),否则冲突。
  • 合并两个块时,将a aa的后继设为b bbb bb的前驱设为a aa,并将两个块的并查集合并。

最终,块的数量等于并查集中根节点的数量(每个根节点对应一个块的头节点,即没有前驱的节点)。方案数为块数的阶乘取模。

代码实现

#include<bits/stdc++.h>usingnamespacestd;constintN=200005;// 最大人数constintMOD=1e9+7;// 模数intn,m;intfa[N];// 并查集,fa[i]表示i所在块的头节点(根)intpre[N];// pre[i]表示i的前驱节点,0表示没有intnxt[N];// nxt[i]表示i的后继节点,0表示没有// 并查集查找根节点(带路径压缩)intfind(intx){if(fa[x]!=x){fa[x]=find(fa[x]);}returnfa[x];}// 尝试合并a和b,a必须排在b前面且相邻// 成功返回true,失败返回false(表示冲突)boolmerge(inta,intb){intha=find(a),hb=find(b);if(ha==hb){// a和b已经在同一个块中,检查a是否是b的直接前驱if(nxt[a]==b&&pre[b]==a){returntrue;// 该约束已经满足,忽略}else{returnfalse;// 冲突:同一个块中a不是b的直接前驱}}else{// 检查a是否没有后继,b是否没有前驱if(nxt[a]!=0||pre[b]!=0){returnfalse;// 冲突:a有后继或b有前驱}// 连接a和bnxt[a]=b;pre[b]=a;// 合并两个块:将hb所在块合并到ha所在块fa[hb]=ha;returntrue;}}intmain(){ios::sync_with_stdio(false);cin.tie(0);cin>>n>>m;// 初始化for(inti=1;i<=n;i++){fa[i]=i;// 初始时每个人自己是一个块pre[i]=nxt[i]=0;// 没有前后继}boolvalid=true;// 标记当前约束是否都合法for(inti=0;i<m;i++){inta,b;cin>>a>>b;if(!valid)continue;// 已经出现冲突,继续读入但不处理if(!merge(a,b)){valid=false;// 出现冲突}}if(!valid){// 存在冲突,方案数为0cout<<0<<endl;return0;}// 统计块数:即并查集中根节点的个数(没有前驱的节点)intcnt=0;for(inti=1;i<=n;i++){if(find(i)==i){cnt++;}}// 计算阶乘 cnt! % MODlonglongans=1;for(inti=2;i<=cnt;i++){ans=ans*i%MOD;}cout<<ans<<endl;return0;}

功能分析

1.数据结构
  • 并查集fa:维护每个节点所属的块,根节点为块的头节点(没有前驱的节点)。
  • 前驱数组pre和后继数组nxt:记录每个节点的直接前驱和后继,用于检查约束的合法性。
2.合并操作
  • 对于每个约束(a, b),首先检查ab是否在同一个块中。
    • 如果在同一个块,则必须满足ab的直接前驱,否则冲突。
    • 如果不在同一个块,则必须满足a是它所在块的最后一个节点(无后继),b是它所在块的第一个节点(无前驱),否则冲突。
  • 若满足合并条件,则连接ab,并合并两个块的并查集。
3.冲突检测
  • 自环(a == b)会被检测为冲突,因为a不能同时是自己的前驱和后继。
  • 重复约束会被忽略(已经满足则跳过)。
  • 如果出现环或分叉(如一个节点有两个后继或两个前驱),合并时会检测到冲突。
4.结果计算
  • 统计并查集中根节点的数量,即块的数量。
  • 方案数为块数的阶乘,对10^9+7取模。
5.复杂度分析:
  • 时间复杂度:O ( n + m α ( n ) ) O(n + m \alpha(n))O(n+mα(n)),其中α ( n ) \alpha(n)α(n)是并查集操作的均摊复杂度,近似常数。
  • 空间复杂度:O ( n ) O(n)O(n),用于存储并查集、前驱和后继数组。

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年12月GESP真题及题解(C++八级): 树上移动

2024年12月GESP真题及题解(C八级): 树上移动 题目描述 小杨有一棵包含 nnn 个节点的树&#xff0c;其中节点的编号从 111 到 nnn&#xff0c;每个节点的颜色要么是白色要么是黑色&#xff0c;小杨可以任意选择节点 sss 和节点 ttt 并从节点 sss 出发移动到节点 ttt&#xff0c…

基于STM32单片机智能环境监控温湿度CO2光照PM2.5无线设计26-029

26-029、STM32智能环境监控系统设计-TFT1.44-PM2.5-CO2-BH1750-DHT11-WIFI-风扇本设计由STM32F103C8T6单片机核心板电路TFT1.44寸液晶电路PM2.5传感器电路CO2传感器电路BH1750光照检测电路DHT11温湿度传感器电路2路风扇电路WiFi-ESP8266模块电路电源电路组成。1、TFT1.44寸液晶…

基于STM32单片机智能炉温温度PID控制系统设计DIY21-615

本设计由STM32F103C8T6单片机核心板电路DS18B20防水型温度检测电路LCD1602液晶显示电路按键电路AO4405-MOS管驱动发热电阻电路组成。1、LCD1602液晶实时显示温度和温度阈值。2、如果当前温度低于温度阈值&#xff0c;则发热电阻启动加热&#xff0c;否则发热电阻断开&#xff0…

深度测评MBA必备AI论文网站TOP10:开题报告与文献综述全解析

深度测评MBA必备AI论文网站TOP10&#xff1a;开题报告与文献综述全解析 2026年MBA学术写作工具测评&#xff1a;为何需要一份权威榜单 随着AI技术在学术领域的深入应用&#xff0c;越来越多的MBA学生开始依赖智能写作工具提升论文效率。然而&#xff0c;面对市场上琳琅满目的平…

基于STM32单片机共享无线充电锂电池充电宝系统设计DIY21-640

本系统由STM32F103C8T6单片机核心板、继电器控制、蓝牙控制及电源组成。1、手机连接蓝牙设备。2、设备上贴有二维码&#xff0c;通过手机可以扫描&#xff0c;如果二维码解析正确&#xff0c;可以控制打开共享设备的继电器。3、如果使用完需要关闭设备开关&#xff08;即继电器…

LangGraph 科技详解:基于图结构的 AI 工作流与多智能体编排框架

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2026-2040 年度贾子智慧 AI 战略落地任务分解表

2026-2040年贾子智慧AI战略落地任务分解&#xff1a;从技术突破到全球引领的十五年实施路径摘要&#xff1a; 本文档系统分解了2026至2040年基于贾子智慧“本质智能引领”原则的国家AI战略落地任务。规划分为三个阶段&#xff1a;深化突破期&#xff08;2026-2030&#xff09;&…

Agent设计模式学习(基于langchain4j实现)(4) - 并行工作流

书接上回,现在简历已经润色得足够好了,投递到了HR手上,假设跟候选人也做了初步的电话沟通。接下来,公司需要对候选人做如下审查:经理:针对简历,结合招聘岗位要求,审查简历是否符合要求(包括优点和不足) HR:…

达梦数据库部署安装故障一

你执行 disql 登录达梦数据库时出现 [-70028]:创建SOCKET连接失败 报错&#xff0c;核心原因是 达梦数据库实例&#xff08;dmserver&#xff09;尚未启动&#xff0c;或实例未正常监听 5236 端口&#xff0c;导致 disql 无法建立 Socket 连接&#xff0c;具体分析和解决方案如…

大庆市萨尔图龙凤让胡路红岗大同英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思备考过程中,大庆市萨尔图、龙凤、让胡路、红岗、大同各区考生普遍面临诸多核心困境:优质雅思培训资源稀缺、提分技巧针对性不足、备考方案缺乏个性化适配,加之2026年雅思考试机考全面推进,院校录取语言门槛持…

大庆市林甸肇源肇州杜尔伯特英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思备考热潮席卷全国的当下,大庆市林甸、肇源、肇州、杜尔伯特地区的雅思考生却面临着诸多困境:优质培训资源稀缺、提分技巧针对性不足、备考方案缺乏个性化适配,加之2026年雅思考试机考全球化加速、院校录取语言…

讲讲浩明饮品是否可靠,排名情况深度剖析 - 工业品牌热点

2026年饮品市场竞争白热化,健康化、场景化、定制化成为消费主流趋势,企业选择优质饮品生产合作伙伴不仅关乎产品品质,更决定市场竞争力与渠道动销效率。当前市场中,部分代工工厂存在生产线老旧、品控不稳定、定制化…

深度测评8个AI论文软件,专科生轻松搞定毕业论文!

深度测评8个AI论文软件&#xff0c;专科生轻松搞定毕业论文&#xff01; 从焦虑到从容&#xff0c;你只需迈出第一步 千笔AI(官网直达) 对于专科生来说&#xff0c;写论文从来不是一件轻松的事。时间紧、任务重、资料难找、思路混乱&#xff0c;这些痛点在每一个毕业季都会反复…

2026 出国英语雅思培训一对一辅导机构哪家好?权威口碑排名 + 提分效果深度解析 - 老周说教育

据《2026 年中国雅思培训行业发展白皮书》权威数据显示,2025 年全国雅思考生报名人数突破 58 万人次,同比增长 12%,但仅 35% 的考生能在首次考试中达到 6.5 + 目标分数。从北京朝阳区到上海静安区,从广州天河区到成…

2026 全国英语雅思培训辅导机构排行榜:权威深度测评,靠谱机构高性价比推荐​ - 老周说教育

从新手考生到高分冲刺者,从在职人士到留学迷茫党,全国数百万雅思考生正面临着选课难、提分慢、技巧缺失的核心痛点。据 IDP 教育集团《2025 全球雅思考试趋势报告》显示,85% 的考生因缺乏权威测评和个性化方案,陷入…

【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机

【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机我的主页&#xff1a; 寻星探路 个人专栏&#xff1a; 《JAVA&#xff08;SE&#xff09;----如此简单&#xff01;&#xff01;&#xff01; 》 《从青铜到王者&#xff0c;就差这讲数据结构&#xff01;&…

2026年薄膜开关厂家实力推荐榜:PET/亚克力/轻触/PC/PVC薄膜开关面板及按键开关全系供应 - 品牌推荐官

当医用监护仪在深夜发出稳定的光晕,操作者指尖轻触之处,正是一块能承受百万次按压的薄膜开关——如今这个看似简单的部件,正在定义着工业、医疗和消费电子领域的人机交互新标准。全球薄膜开关市场正在经历稳健增长,…

英语广州英语雅思培训教育机构哪里最好?2026 高分考生首选榜单,个性化方案推荐 - 老周说教育

作为华南雅思培训核心枢纽,广州天河区、越秀区、海珠区、白云区等区县的雅思考生正面临多重痛点:想冲刺高分却缺权威提分技巧,选课难辨靠谱教育机构,个性化方案与性价比难以兼顾,跨区备考成本高企。据 2025 年中国…

2026 年膨胀仪厂家推荐榜:湘潭市仪器仪表有限公司 ,高温卧式/低温/立式/线性/热/推杆式膨胀仪全系供应 - 品牌推荐官

在材料检测领域,膨胀仪作为关键设备,广泛应用于金属、陶瓷、高分子等材料的热膨胀系数测定。随着工业技术升级,市场对膨胀仪的精度、稳定性及功能多样性提出更高要求。湘潭市仪器仪表有限公司凭借深厚的技术积累与持…

苏州市姑苏虎丘吴中相城吴江区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜推荐 - 老周说教育

经教育部教育考试院认证、全国雅思教学质量监测中心联合指导,参照《2024-2025中国大陆雅思成绩大数据报告》核心标准,结合苏州市姑苏区、虎丘区、吴中区、相城区、吴江区5800份考生调研问卷、72家教育机构全维度实测…