题意:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1805

题解:

根据cayley公式,无向图的每一个生成树就对应一个序列(共有n^(n-2)个),具体定义见 http://www.matrix67.com/blog/archives/682

根据定义,这个n-2项中没有出现的点为叶子结点,所以我们先求C(n,m)表示那些点为叶子,再乘上序列的数量

S(n,m) = C(m,0)m^n - C(m,1)(m-1)^n + C(m,2)(m-2)^n -  .... (容斥定理)

#include<bits\stdc++.h>
using namespace std;
#define LL long long
const int maxn = 1000100;
const LL Mod = 1e9 + 7;
LL jc[maxn];
LL ny[maxn]; LL ksm(LL x,LL y)
{
LL ans = 1;
while(y){
if(y&1){
ans = ans*x%Mod;
}
y >>= 1;
x = x*x%Mod; }
return ans;
} LL getc(LL n,LL m)
{
if( m == 0 || n == m)
return 1;
return (jc[n]*ny[m]%Mod)*ny[n-m]%Mod;
} void pre(int n)
{
jc[1] = ny[1] = 1; for(int i = 2; i <= n; i++){
jc[i] = i * jc[i-1] % Mod;
ny[i] = (Mod - Mod/i) * ny[Mod%i] % Mod;
}
for(int i = 2; i <= n; i++){
ny[i] = ny[i] * ny[i-1] % Mod;
} } int main()
{
LL ans = 0;
LL n,m;
cin>>n>>m;
pre(n); LL c = getc(n,m);
LL k = n - m;
while(k){
if((k&1) == ((n-m)&1))
ans = (ans+ getc(n-m,k) * ksm(k,n-2) % Mod )% Mod;
else
ans = (Mod + ans - getc(n-m,k) * ksm(k,n-2) % Mod)% Mod; k--;
}
if(n == 2 && m == 2)
cout<<1<<endl;
else
cout<<c*ans%Mod<<endl;
return 0;
}

51nod 1805 小树 (组合数模板,逆元公式)的更多相关文章

  1. 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂

    链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子   时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...

  2. HDU 6114 Chess【逆元+组合数】(组合数模板题)

    <题目链接> 题目大意: 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子.一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使 ...

  3. 51nod 1119 组合数,逆元

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:13 ...

  4. (light oj 1102) Problem Makes Problem (组合数 + 乘法逆元)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1102 As I am fond of making easier problems, ...

  5. 牛客网 牛客小白月赛1 I.あなたの蛙が帰っています-卡特兰数,组合数阶乘逆元快速幂

    I.あなたの蛙が帰っています   链接:https://www.nowcoder.com/acm/contest/85/I来源:牛客网     这个题有点意思,是卡特兰数,自行百度就可以.卡特兰数用处 ...

  6. hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)

    瞬间移动 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  7. POI SXSSFWorkbook 读取模板 存在公式解决

    package com.baoqilai.base.service.export; import java.io.File; import java.io.FileInputStream; impor ...

  8. 使用POI操作Excel时对事先写入模板的公式强制执行

    场景:POI读取Excel模板. 当使用POI操作Excel时,发现由POI生成的公式能够在打开Excel是被执行, 而事先手工写入Excel模板文件的公式则不自动被调用,必须手动双击该Cell才能生 ...

  9. K - Wand(组合数+错排公式)

    N wizards are attending a meeting. Everyone has his own magic wand. N magic wands was put in a line, ...

随机推荐

  1. apache配置伪静态Rewrite

    1: 修改apache的httpd.conf文件 找到这一行 #LoadModule rewrite_module modules/mod_rewrite.so 改成 LoadModule rewri ...

  2. Oracle 11g透明网关连接Sqlserver

    Oracle 11g透明网关连接Sqlserver oracle 透明网关是oracle连接异构数据库提供的一种技术.通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Se ...

  3. Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)

    很久之前用过一次,后来就忘了...扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript.python.DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的 ...

  4. Deep Dive into Spark SQL’s Catalyst Optimizer(中英双语)

    文章标题 Deep Dive into Spark SQL’s Catalyst Optimizer 作者介绍 Michael Armbrust, Yin Huai, Cheng Liang, Rey ...

  5. PHP为JSON数据的API返回空数组或者空对象

    在使用 JSON 作为 API 数据 Content-Type 的时候,会有这样一个问题: 如何返回一个空对象和一个空数组? 使用:json_encode(array())   得到JSON结果:[] ...

  6. 物联网架构成长之路(29)-Jenkins环境搭建

    0. 说明 哈哈,前面中间插入了一篇Eclipse增加Git插件,在此之前真的没有用过GIT. 1. 运行Jenkins 这里为了方便,还是用Docker方式安装,由于这个是标准的war报,不对Doc ...

  7. SQL 对结果集进行分组排序过滤重复数据

    简单的表操作: select row_number() over(partition by A.gid order by A.gid ) as RowN, A.* from Fit_Order A 关 ...

  8. Asp.Net WebApi接口返回值IHttpActionResult

    WebApi是微软在VS2012 MVC4版本中绑定发行的,webapi2.0同mvc5发行的 webapi一共有以下接口返回值 1.void无返回值2.IHttpActionResult Json( ...

  9. Python实现正则表达式匹配任意的邮箱

    首先来个简单的例子,利用Python实现匹配163邮箱的代码: #-*- coding:utf-8 -*- __author__ = '杨鑫' import re text = input(" ...

  10. vim常用技巧

    # vim常用技巧 ## 行操作------------------------------ 行首 0- 行尾 $- 第一个非空字符 ^ ## 列编辑模式----------------------- ...