「LG6596-How Many of Them」题解

news/2025/10/21 20:50:27/文章来源:https://www.cnblogs.com/LastKismet/p/19156383

P6596 How Many of Them

sol

首先发现 \(n\) 特别小(事实上不如题中给出的这么小。。),于是考虑枚举割边数量。

这么做的一个重要根据是存在如下结论:

对于一个 \(n\) 个点,已有 \(k\) 个联通块的图,记第 \(i\) 个联通块的点数为 \(a_i\),则连 \(k-1\) 条边使图联通的方案数为:

\[n^{k-2}\prod_{i=1}^ka_i \]

这个结论可以利用 prufer 序列证明。

因此我们关心的就是对于所有 \(k\in[0,m]\),存在 \(k\) 条割边的所有图形态 \(G\),下式的值:

\[\sum_G\prod_{i=1}^{k+1}a_i \]

考虑 DP,状态 \(f(i,j)\) 表示 \(i\) 个点 \(j\) 条割边上式的值,转移考虑枚举最后一个点 \(i\) 所在边双的状态,有:

\[f(i,j)=\sum_{k=1}^{i-1}\binom{i-1}{k-1}f(i-k,j-1)f(k,0) \]

\(k\) 为枚举的边双大小,转移式意义显然。

考虑边界条件,也就是 \(j=0\) 时的情况,其意义为 \(i\) 个点的图是一个边双的方案数,考虑容斥,用连通图方案数减去多个边双的方案数即可。多个边双的方案数显然可以通过已经求得的 \(f(i,j>0)\) 以及上面的结论得到,记 \(g(i)\)\(i\) 个点的连通图方案数,有转移式:

\[f(i,0)=\left(g(i)-\sum_{j=1}^{i-1}i^{j-1}f(i,j)\right)i \]

现考虑连通图方案数。同样考虑容斥,所有情况减去不连通的情况即可,同样的考虑枚举点 \(1\) 所在连通块状态,其余不相干的边任意连即可,有转移式:

\[g(i)=2^{\binom{i}{2}}-\sum_{j=1}^{i-1}\binom{i-1}{j-1}g(j)2^{\binom{i-j}{2}} \]

那么答案即为:

\[\sum_{i=0}^mn^{i-1}f(n,i) \]

实际实现上,为防止越界等各种意外情况,枚举上界不得超过 \(n-1\)

时间复杂度 \(O(n^2)\)

感觉还是比较适合入门的图计数(?),假如已知开头那个结论的话。其余各个部分都不要求特别有难度的算法,也没有很突兀的思维转折。

code

const int N=55;int n,m;
mint fc[N],iv[N];
mint f[N][N],g[N],ans;
#define C(n,m) (fc[n]*iv[m]*iv[(n)-(m)])inline void Main(){cin>>n>>m;fc[0]=1;rep(i,1,n)fc[i]=fc[i-1]*i;iv[n]=1/fc[n];per(i,n,1)iv[i-1]=iv[i]*i;g[1]=1;rep(i,2,n){g[i]=qpow(2,i*(i-1)/2);repl(j,1,i)g[i]-=C(i-1,j-1)*g[j]*qpow(2,(i-j)*(i-j-1)/2);}f[1][0]=1;rep(i,2,n){repl(j,1,i)repl(k,1,i)f[i][j]+=f[i-k][j-1]*C(i-1,k-1)*f[k][0];f[i][0]=g[i];repl(j,1,i)f[i][0]-=qpow(i,j-1)*f[i][j];f[i][0]*=i;}rep(i,0,min(m,n-1))ans+=qpow(n,i-1)*f[n][i];put(ans);
}

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

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

相关文章

骗我呢

\(\mathbf{Part. 1}\) 从右往左考虑肯定没啥前途,我们考虑从上往下扫行。对于每一行,它上面的元素肯定都是单调递增的,又知道元素的值域在 \(0\) 到 \(m\),而一行总共有 \(m\) 个数,因此每行可以被表示为 \(0\) 到…

手搓文件管理系统(持续开发中)

#include<bits/stdc++.h> using namespace std;/*** command:* cd [dirname]* to shift to a name_given dir* mkdir [dirname]* create a new dir under current dir* ls [dirname]* list…

AGC001~030 合集

AGC001~030。2025.3.10 - 2025.10.21。 如果附带了题目大意的话就是最近才做,或者是我过了几个月看不懂自己写的啥了重写了一遍。 如果您认为某些题目的理解不够到位,非常欢迎交流!!/kel,虽然应该也不会有人仔细看…

手写体识别

手写数字识别:基于PyTorch的卷积神经网络实现 一、项目概述 使用PyTorch实现一个基于卷积神经网络(CNN)的手写手写数字识别模型,通过MNIST数据集训练,实现对手写数字(0-9)的分类识别。 二、环境依赖Python 3.x PyTo…

AGC 合集 1.0

AGC001~030。2025.3.10 - 2025.10.21。 收录了前 30 场 AGC 中我写了题解的题目。 如果附带了题目大意的话就是最近才做,或者是我过了几个月看不懂自己写的啥了重写了一遍。 如果您认为某些题目的理解不够到位,非常欢…

20231302邱之钊密码系统设计实验一第二

1.参考相关内容,在Ubuntu或openEuler中(推荐openEuler)中使用OpenSSL库编程实现调用SM2(加密解密,签名验签),SM3(摘要计算,HMAC 计算),SM4(加密解密)算法,使用Markdown记录详细记录实践过程,每完成一项…

你好,我是肆闲:C语言的学习,成长与分享旅程

大家好,我是肆闲。 今天,我写下了我的第一篇博客,就像一个程序员运行了第一段 print("Hello World")一样。代码简单,却标志着一个充满无限可能的新世界,在我眼前打开了大门。作为一个刚入门的小白,我对…

深入BERT内核:用数学解密掩码语言模型的工作原理

传统语言模型有个天生缺陷——只能从左往右读,就像你现在读这段文字一样,一个词一个词往下看,完全不知道后面会出现什么。人类可不是这么学语言的。看到"被告被判**_**",大脑会根据上下文直接联想到&quo…

ZR 2025 NOIP 二十连测 Day 6

100 + 72 + 35 + 0 = 207, Rank 61/131.啊啊啊第一次上 200 /oh25noip二十连测day6 链接:link 题解:题目内 时间:4.5h (2025.10.21 13:40~18:10) 题目数:4 难度:A B C D\(\color{#F39C11} 橙\)*1200估分:100 + 7…

20251021

上午工程实训课接触了电工基础,老师演示了万用表测量、简单电路连接和安全操作规范 下午英语课围绕旅游主题展开听力, 晚上写离散数学作业 间隙用碎片时间整理了课堂笔记,还讨论了实训课上的电路连接问题。 (工程实…

[论文笔记] Precision-Guided Context Sensitivity for Pointer Analysis

Introduction Context-sensitivity 会带来静态分析的精度提升,但是也会带来巨大的开销,这引出一个关键的问题:能否在某些对整体分析的精度有重要影响的函数上选择性的使用 context-sensitivity?这个问题的难点在于…

英语_备忘_疑难

好的,这里有一些关于 **How** 和 **What** 在感叹句中使用的例题,涵盖了常见的规则和易错点。 **规则回顾:*** **What + (a/an) + 形容词 + 名词*** **How + 形容词/副词 + (主谓)** --- **例题:** 请选择正…

朋友圈文案不会写?这个AI指令可能帮得上忙

最近在整理AI提示词的时候,顺手写了个朋友圈文案生成的指令。本来只是自己用,后来发现身边朋友也有这个需求,就想着分享出来。写在前面 刷朋友圈的时候,你有没有发现:有些人随便发个照片配几个字,点赞评论一大堆…

「JOISC2020-掃除」题解

题解记录掃除 (Sweeping) sol 从 Subtask 3 的特殊性质入手,可以发现一个关键性质:无论之后如何操作,这个单调性在任何时刻均满足。其原因可以简单考虑一下操作的效力范围与结果得到。 理解之后容易推广到全局,不难…

职责分离的艺术:剖析主从Reactor模型如何实现极致的并发性能

职责分离的艺术:剖析主从Reactor模型如何实现极致的并发性能Reactor单线程模型 在Reactor单线程模型中,所谓的“单线程”主要针对I/O操作而言,即所有的I/O操作(如accept()、read()、write()和connect())都在同一个…

数学题刷题记录(数学、数论、组合数学)

P5686 [CSP-S2019 江西] 和积和简单题,直接将区间求和转换成前缀和,设 \(A_i = \sum_{i = 1}^n a_i,B_i = \sum_{i = 1}^n b_i\),那么式子为: \[\sum_{l = 1}^n \sum_{r = l}^n (A_r-A_{l-1})(B_r-B_{l-1}) \]\[=\…

记录一次raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞

记录一次raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:记录一次raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600) 作者:惜分飞…

CF简单构造小计

记录在这的都是感觉比较妙的或者看了题解的( CF2155D Batteries有 \(n\) 个元素,其中有 \(a\) 个是好的( \(a\) 未知)。 每次你可以询问一对元素,返回1当且仅当两个元素都是好的,否则返回0。 在 \(\lfloor\frac{…

软件工程第三次作业:四则运算题目生成器 - Nyanya-

四则运算题目生成器 - 结对项目报告项目信息 详情课程 软件工程作业要求 结对项目项目目标 实现一个四则运算题目生成器,支持有理数运算,规范软件开发流程,熟悉结对编程结对成员 姓名1: [杨浩] 学号1: [3123004462]…

ORA-600 kokasgi1故障处理(sys被重命名)---惜分飞

ORA-600 kokasgi1故障处理(sys被重命名)---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:ORA-600 kokasgi1故障处理(sys被重命名) 作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有…