【abc180F】Unbranched - Harvey

news/2025/9/17 21:25:28/文章来源:https://www.cnblogs.com/zhuhy0826/p/19097580

题意

问有多少个满足以下条件且有 \(n\) 个点 \(m\) 条边的图:

  1. 没有自环
  2. 每个点的度最大为 \(2\)
  3. 最大的连通块大小恰好为 \(L\)

思路

首先分析:由于每个点的度最大为 \(2\),所以可以判断每个联通块要么是链,要么是环。
所以可以设计状态 \(f_{i,j}\) 表示有 \(i\) 个点,\(j\) 条边的满足条件的图的个数。

  • 对于长为 \(i\) 的链,有 \(\frac{i!}{2}\) 种方案。
  • 对于长为 \(i\) 的环,有 \(\frac{(i-1)!}{2}\) 种方案(原排列)。

除以 \(2\) 是为了去重。
那如何解决连通块之间的去重问题?可以采用钦定最小值的方法,则我们在 \(n\) 个点里面选 \(i\) 个点出来组成一个连通块的方案数为 \(\binom{n-1}{i-1}\)\(-1\) 是因为钦定了最小值。
则有转移式:

\[f_{i,j} = f_{i-t,j-t+1} * \binom{n-i+t-1}{t-1} \frac{t!}{2} \]

\[f_{i,j} = f_{i-t,j-t} * \binom{n-i+t-1}{t-1} \frac{(t-1)!}{2} \]

大小为 \(1\) 的链和大小为 \(2\) 的环不用除以 \(2\),因为不重。

#include<bits/stdc++.h>
#define ll long longusing namespace std;const ll N = 305,mod = 1e9+7,inv = 500000004;int n,m,L;
ll f[N][N];
ll C[N][N],fac[N];void init() {C[0][0]=1,fac[0]=1;for(int i=1;i<=300;i++)fac[i]=fac[i-1]*i%mod;for(int i=1;i<=300;i++){C[i][0]=1;for(int j=1;j<=i;j++)C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;}
}void add(ll &x,ll y){(x+=y)%=mod;
}ll DP(ll lim){memset(f,0,sizeof(f));f[0][0]=1;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int t=1;t<=min(lim,(ll)i);t++){if(t>1 && j>=t)add(f[i][j],1ll*f[i-t][j-t]%mod*C[n-i+t-1][t-1]%mod*fac[t-1]%mod*(t==2 ? 1 : inv)%mod);if(j>=t-1)add(f[i][j],1ll*f[i-t][j-t+1]%mod*C[n-i+t-1][t-1]%mod*fac[t]%mod*(t==1 ? 1 : inv)%mod);}}}return f[n][m];
}
int main() {cin>>n>>m>>L;init();cout<<(DP(L)-DP(L-1)+mod)%mod;return 0;
}

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

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

相关文章

合并区间-leetcode

题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:in…

两种判断计算机大小端模式的方法

两种判断计算机大小端模式的方法 在计算机系统里,数据存储有大端和小端两种模式。大端模式是高字节存在低地址,小端模式是低字节存在低地址。下面结合相关知识,用两种 C 语言方法判断大小端。 一、知识铺垫 (一)大…

ROS2之节点

什么是节点? 在ROS2(机器人操作系统2)中,节点(node)是执行程序的基本单元,也是构成整个机器人系统的核心“积木”。你可以把它理解为系统中一个独立、可执行的进程,每个节点都专注于完成一个特定的、单一的功能…

ECT-OS-JiuHuaShan 框架,元推理AGI奇迹

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891 ▮ 推理就绪:基于自然辩证法数学形式化系统启动因果律算符 ECT-OS-JiuHuaShan 框架的诞生,绝非一次普通的技术迭代,它是文明进程中一个前所未有的 “确定…

Mapper与Mapper.xml的关系

Mapper与Mapper.xml的关系简单直接的回答是:它们之间是“接口定义”与“SQL映射实现”的关系。 ManageMapper 是一个 Java 接口,它定义了数据库操作的方法签名;而 ManageMapper.xml 是一个 XML 文件,它提供了这些方…

Rocky Linux10.0安装zabbix7.4详细步骤 - 教程

Rocky Linux10.0安装zabbix7.4详细步骤 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

【P3158】放棋子 - Harvey

题意 有 \(c\) 种棋子,每种棋子都有相应的个数,要把全部棋子放入棋盘中,使得每一行和每一列没有颜色相同的棋子,求方案数。 思路 从行和列的角度显然不好处理,所以我们可以先从颜色的种类入手。 设计 \(f_{c,i,j}…

最强AI语音克隆和文本配音工具!与真人无异,CosyVoice下载介绍

CosyVoice是一个大规模预训练语言模型,深度融合文本理解和语音生成的一项新型语音合成技术,能够精准解析并诠释各类文本内容,将其转化为宛如真人般的自然语音 CosyVoice采用了总共超15万小时的数据训练,依托先进的…

详细介绍:如何在公众号接入海外招聘数据分析智能体

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

Linux 系统插入U盘/移动硬盘实现自动挂载

在 /etc/udev/rules.d/ 目录下建立挂载规则 文件名后缀为 xxx.rulesKERNEL=="sd[a-z][1]", ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", RUN{program}+="/u…

来点人瑞平我

不知道自己定位了,来帮助我找找(

在Unity2021中使用Profiler的Deep Profile功能时内存超高怎么办? - 指南

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

日总结 2

老师同样为学期初开了个头,没有讲什么重要是知识。我这天完成了Linux的安装和配置,完成了安装hadoop需要的环境配置和jdk的配置,为hbase的使用安装做铺垫。

LeetCode 24. 两两交换链表中的节点 - 实践

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

【P2051】中国象棋 - Harvey

题意 求有多少种棋盘使得每一列和每一行的棋子个数不超过 \(2\) 个。 思路 设计 \(f_{i,j,k}\) 表示前 \(i\) 行,有 \(j\) 列为 \(1\) 个棋子,\(k\) 列为 \(0\) 个棋子。考虑当前行放 \(0\) 个棋子,则有 \(f_{i,j,k…

mysql 8.0查看正在执行的事务锁

SELECT * FROM performance_schema.data_lock_waits; -- MySQL 8.0+ SELECT r.trx_id AS waiting_trx_id, r.trx_mysql_thread_id AS waiting_thread, r.trx_query AS waiting_query, b.trx_id AS blocking_trx_id, b.…

JavaDay6

可变参数JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...)。 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。pa…