博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 1109D. Sasha and Interesting Fact from Graph Theory
阅读量:4549 次
发布时间:2019-06-08

本文共 1759 字,大约阅读时间需要 5 分钟。

Codeforces 1109D. Sasha and Interesting Fact from Graph Theory

解题思路

这题我根本不会做,是周指导带飞我.

首先对于当前已经有 \(m\) 个联通块的有标号生成树的数量是

\[ n^{m-2}\prod_{i=1}^msize_i \]
其中 \(size_i\) 是第 \(i\) 个联通块的大小.

原理就是考虑 \(prufer\) 编码,先把每个联通块看成一个点,那么序列中每出现一个第 \(i\) 联通块缩成的点,能连的边的数量是 \(size[i]\) ,所以序列每一位的方案数是 \(\sum size[i]=n\),考虑每一个点的度数是在序列中的出现次数\(+1\),所以对于每一个联通块还要补上一条连边的方案数.

然后这个题相当于就是确定了一条链,在剩下 \(n-i-2\) 个联通块的基础上求有标号生产树数量,其中 \(i\)\(a,b​\) 之间的点数,根据上面的式子,可以得到答案的式子

\[ ans = \sum_{i=0}^{n-2}\binom{m-1}{i}\binom{n-2}{i}\times i!\times n^{n-i-3}\times (i+2)\times m^{n-i-2} \]

code

/*program by mangoyang*/#include 
#define inf (0x7f7f7f7f)#define Max(a, b) ((a) > (b) ? (a) : (b))#define Min(a, b) ((a) < (b) ? (a) : (b))typedef long long ll;using namespace std;template
inline void read(T &x){ int ch = 0, f = 0; x = 0; for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1; for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - 48; if(f) x = -x;}#define int llconst int N = 10000005, mod = 1e9+7;int js[N], inv[N], n, m, a, b, ans;inline int Pow(int a, int b){ if(b == -1) b = mod - 2; int ans = 1; for(; b; b >>= 1, a = a * a % mod) if(b & 1) ans = ans * a % mod; return ans;}inline int C(int x, int y){ if(x < y) return 0; return js[x] * inv[y] % mod * inv[x-y] % mod; }signed main(){ read(n), read(m), read(a), read(b); js[0] = inv[0] = 1; for(int i = 1; i <= max(n, m); i++) js[i] = js[i-1] * i % mod, inv[i] = Pow(js[i], mod - 2); for(int i = 0; i <= n - 2; i++) (ans += C(m - 1, i) * C(n - 2, i) % mod * js[i] % mod * Pow(n, n - i - 3) % mod * (i + 2) % mod * Pow(m, n - i - 2) % mod) %= mod; cout << ans << endl; return 0;}

转载于:https://www.cnblogs.com/mangoyang/p/10415280.html

你可能感兴趣的文章
HttpClient连接超时及读取超时
查看>>
SQL优化方法
查看>>
SEO必须掌握的高级搜索指令
查看>>
生产者消费者模型
查看>>
ORACLE 字符串超长问题解决方案
查看>>
使用ZooKeeper协调多台Web Server的定时任务处理(方案1)
查看>>
20171116 每周例行报告
查看>>
[C#] SHA1校验函数用法
查看>>
linux 下 VMware 提示Unable to change virtual machine power state:
查看>>
洛谷P1585 魔法阵
查看>>
线程 题待做
查看>>
PL/SQL可以连oracle,但是jdbc连不上 【转】
查看>>
使用 highlight.js 在网页中高亮显示java 代码 【原】
查看>>
Android应用 程序框架设计方法
查看>>
基于Nginx环境下5种http转https的设置方法
查看>>
windows创建服务
查看>>
锋利的JQuery —— JQuery性能优化
查看>>
MIT许可证
查看>>
JQuery发送Ajax请求
查看>>
SQL 中的 case when
查看>>