Unbranched

news/2025/9/29 21:07:14/文章来源:https://www.cnblogs.com/wuzihe/p/19119530

简化题意

给定一个有 \(N\) 个顶点、\(M\) 条边的无向图,顶点有标签,边没有标签。该图不一定是简单图,也不一定是连通图。请计算满足以下条件的图的数量,并将结果对 \(10^9+7\) 取模:

  • 不包含自环。
  • 所有顶点的度数都不超过 \(2\)
  • 将每个连通分量的大小按升序排列后,最大值恰好为 \(L\)

思路

题目分析

  • 所有点的度数都不超过 \(2\)

所以每一个联通块要么是一条链,要么是一个环。

  • 所有的联通分量的最大值恰好为 \(L\)

直接维护恰好为 \(L\) 不好维护,可以先求出联通分量 \(\le L\) 的方案数和 \(< L\)的方案数,再相减就是答案了。这是一个非常常见的一个小 trick

解决问题

注意到和方案数有关,考虑动态规划dp

\(f_{i, j}\) 表示用了 \(i\) 个点,\(j\) 条边,最大的联通分量 \(\le L\) 的方案数。

\(g_{i, j}\) 表示用了 \(i\) 个点,\(j\) 条边,最大的联通分量 \(< L\) 的方案数。

不妨枚举 \(k\),表示当前的联通分量为 \(k\)

  1. 当前联通块为链。

\(f_{i, j}\) 可以从 \(f_{i - k, i - k + 1}\) 转移得到,当前联通块的点的选择数量为 \(n - i + k\),但是因为 \({1, 2, 3} {4, 5, 6}\)\({4, 5, 6} {1, 2, 3}\) 这两种划分只会算一种,不妨每次都要取走至少一个剩下的点的最小值,因为 \(1 < 3\),所以会先选 \({1, 2, 3} {4, 5, 6}\) 这中情况,而不会选 \({4, 5, 6} {1, 2, 3}\) 这种情况,则选择方案数为 \(C_{n - i + k - 1}^{k - 1}\),由于 \({1, 2, 3}\)\({1, 3, 2}\) 算两种,所以还需要乘上 \(k!\),但是又因为 \({3, 2, 1}\)\({1, 2, 3}\) 算同种方案,所以还需要除以二,所以转移式如下:

\[f_{i, j} = f_{i, j} + f_{i - k, i - k + 1} * C_{n - i + k - 1}^{k - 1} * \frac{k!}{2} \]

  1. 当前连通块为环。

思路相似,直接给出式子:

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

最后答案即为 \(f_{n, m}\) - \(g_{n, m}\)

代码

#include <iostream>
using namespace std;const long long N = 310;
const long long mod = 1e9 + 7;
long long n, m, l, f[N][N], g[N][N], prep[N], inv[N];long long qmi(long long x, long long k) {long long res = 1;while (k) {if (k & 1)res = res * x % mod;k >>= 1;x = x * x % mod;}return res;
}long long C(long long x, long long y) { return prep[x] % mod * inv[x - y] % mod * inv[y] % mod; }int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m >> l;prep[0] = prep[1] = 1;for (long long i = 2; i <= n; i++) prep[i] = prep[i - 1] * i % mod;for (long long i = 0; i <= n; i++) inv[i] = qmi(prep[i], mod - 2);f[0][0] = 1;g[0][0] = 1;for (long long i = 1; i <= n; i++)for (long long j = 0; j <= m; j++) {for (long long k = 1; k <= min(l, min(i, j + 1)); k++) {f[i][j] = (f[i][j] + f[i - k][j - k + 1] % mod * C(n - i + k - 1, k - 1) % mod * (k == 1 ? 1 : inv[2]) % mod * prep[k] % mod) % mod;}for (long long k = 2; k <= min(l, min(i, j)); k++) {f[i][j] = (f[i][j] + f[i - k][j - k] % mod * C(n - i + k - 1, k - 1) % mod * (k == 2 ? 1 : inv[2]) % mod * prep[k - 1] % mod) % mod;}for (long long k = 1; k <= min(l - 1, min(i, j + 1)); k++) {g[i][j] = (g[i][j] + g[i - k][j - k + 1] % mod * C(n - i + k - 1, k - 1) % mod * (k == 1 ? 1 : inv[2]) % mod * prep[k] % mod) % mod;}for (long long k = 2; k <= min(l - 1, min(i, j)); k++) {g[i][j] = (g[i][j] + g[i - k][j - k] % mod * C(n - i + k - 1, k - 1) % mod * (k == 2 ? 1 : inv[2]) % mod * prep[k - 1] % mod) % mod;}}cout << (f[n][m] - g[n][m] + mod) % mod << "\n";return 0;
}

个人反思

考场的思路

时间不够,没有看题。

怎么改正

  1. 考试的时候要合理安排时间,不要只再同一题上思考超过 \(1\) 个小时。

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

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

相关文章

免费申请网站空间教学网站开发背景

目录 1. 数据结构1-1. 动态字符串&#xff08;SDS&#xff09;1-2. intset1-3. Dict 2. 网络模型3. 通信协议4. 内存策略 1. 数据结构 1-1. 动态字符串&#xff08;SDS&#xff09; 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字…

必应搜索引擎入口seo现在还有前景吗

打开注册表编辑器&#xff0c;在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目&#xff0c;并删除它。这样就可以清除安装暂挂项目。 方法二&#xff1a; 1、添加/删除程序中彻底删除sql server。 2、将没有删除…

P5469 [NOI2019] 机器人 题解

P5469 [NOI2019] 机器人 题解 分析最右侧的最大值的位置,发现当 \(n\) 为偶数时只能在中间两个位置,当 \(n\) 为奇数时只能在中间三个位置。可以 DP,设 \(f_{l,r,i}\) 表示 \([l,r]\) 的最大值小于等于 \(i\) 的方案…

肥城网站建设广州外地车牌注册建筑公司需要什么条件

go编译程序出现错误提示&#xff1a; go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决方法&#xff1a; cmd切换到go工程目录下&#xff0c;执行: go mod init 工程名称

计算机操作系统笔记

计算机操作系统笔记$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");第一章:操作系统概述 一、操作系统的概念操作系统(Operating System,OS)是指控制和管…

大型网站开发工具北京 外贸网站

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

wordpress 网站打开速度慢郑州做网站服务器

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一 、Linux中的用户1.1 Linux用户分类1.2 用户转换1.3 指令提权 二、Linux权限管…

做好的网站php网站文件下载怎么做

Backpropagation计算过程举例 初始权重(initialize weights)是随机产生的(如-1~1之间) 初始化可以选择均值为0&#xff0c;方差为1/n_in的正态分布&#xff0c;n_in为输入的实例个数&#xff0c;Python中可使用np.random.normal函数来初始化权重&#xff1a; np.random.normal…

受欢迎的网站建设教程企业文化怎么写

ViewPager控件允许页面在水平方向左右滑动&#xff0c;就像翻书、翻报纸&#xff0c;Android提供了已经分装好的控件。对于ViewPager来说&#xff0c;一个页面就是一个项&#xff08;相当于ListView的一个列表项&#xff09;&#xff0c;许多页面组成ViewPager的页面项。 List…

网站建设亿金手指花总12自动更新的网站建设

前言 小编研究生的研究方向是视觉SLAM&#xff0c;目前在自学&#xff0c;本篇文章为初学高翔老师课的第四次作业。 文章目录 前言1.图像去畸变2.双目视差的使用3.矩阵微分4.高斯牛顿法的曲线拟合实验 1.图像去畸变 现实⽣活中的图像总存在畸变。原则上来说&#xff0c;针孔透…

获得网站源文件小清新网站源码

一、Mybaits的优点&#xff1a; 1、基于 SQL 语句编程&#xff0c;相当灵活&#xff0c;不会对应用程序或者数据库的现有设计造成任 何影响&#xff0c;SQL 写在 XML里&#xff0c;解除 sql与程序代码的耦合&#xff0c;便于统一管理&#xff1b;提供 XML 标签&#xff0c;支持…

凡科网站空间慢专做蓝领招聘网站有哪些

python中numpy矩阵运算操作大全&#xff08;非常全&#xff09; //2019.07.10晚python矩阵运算大全1、矩阵的输出形式&#xff1a;对于任何一个矩阵&#xff0c;python输出的模板是&#xff1a;import numpy as np #引入numpy模块np1np.array([[1,2,3],[1,3,4],[1,6,2]...]) #数…

AtCoder AGC073 A 题解

题目链接:https://atcoder.jp/contests/agc073/tasks/agc073_a 参考出题人题解 首先理解题意可以破圆为链,直接枚举肯定会超时,考虑将转化成期望,对于某一段黑色区域,当某区域包含一段弧时,我们给每个端点加上 \…

网站flash制作教程收录平台

FreeRTOS-事件标志组 一、事件标志组简介二、事件标志组API函数三、事件标志组实验 一、事件标志组简介 事件标志位&#xff1a;用一个位来表示事件是否发生&#xff0c;裸机中的中断标志位等等事件标志组&#xff1a;是一组事件标志位的集合&#xff0c;简单认为就是一个整数…

怎么开个人网站阿里云 wordpress 响应时间

Redis 实现分布式Session 登录 借助 Redis 对 Session 信息进行统一的存储和管理&#xff0c;这样无论请求发送到哪台服务器&#xff0c;服务器都会去同一个 Redis 获取相关的 Session 信息&#xff0c;这样就解决了分布式系统下 Session 存储的问题。 【发送短信】校验手机号…

什么浏览器好用可以看任何网站android开发wordpress

「Author&#xff1a;Runsen」当初学Python的时候&#xff0c;把一些标准库和第三方开源库学的七零八落&#xff0c;不成系统&#xff0c;正好趁这个机会来系统的整理一下&#xff0c;先从Python常用的标准库os开始吧。osOS模块简单的来说它是一个Python的系统编程的操作模块&a…

童装网站建设目标网站建设公司做销售前景好不好

文章目录 前言一、抽象类和接口对比二、举例说明三种情况1.接口实现类接口 2.抽象类实现类抽象类实现类(子类) 3.抽象类实现接口接口抽象类三个实现类 总结 前言 抽象类和接口其实都是抽象的一种,那么他俩有何异同呢? 抽象类实现接口的意义何在? 一、抽象类和接口对比 接口…

wordpress下载网站西安哪里可以做公司网站

实时监控&#xff1a; 可视化大屏可以实时监控通讯网络的运行状态和性能指标。通过可视化展示网络的拓扑结构、设备状态、带宽利用率、延迟等数据&#xff0c;运维人员可以及时发现和解决网络故障&#xff0c;保障通讯网络的稳定性和可靠性。 故障诊断与分析&#xff1a; 可视…

山西企业网站建设手机app制作网站

真格这周是学习使用了不少,功能算是很不错,但在做的时候也发现了一个问题: 数据缺失:我在做回测,要求获取每天的delta值,并从中筛选条件值时,报错,显示无数据。不得不使用pass,影响我的回测连贯性。 现在开始讲下,我做的几个功能函数: 算起来,挺烦的,就是各种细节…