Description

saruka有一座大大的城堡!城堡里面有n个房间,每个房间上面都写着一个数字p[i]。有一天,saruka邀请他的小伙伴LYL和 MagHSK来城堡里玩耍(为什么没有妹子),他们约定,如果某一个人当前站在i号房间里,那么下一步他就要去p[i]号房间,在下一步就要去 p[p[i]]号房间。

为了增加趣味性,saruka决定重新书写一下每个房间的p[i],以满足:

<1>如果从编号为1-k的某个房间走,按照规则走,必须能走回1号房间。特别的,如果从1号房间开始走,也要走回1号房间。(至少走一步,如果p[1] = 1,从1走到1也算合法)

<2>如果从编号大于k的房间开始,按照规则走,一定不能走到1号房间。

saruka想知道,一共有多少书写p[i]的方案可以满足要求?

Input

共一行两个数字n,k,含义如题。

Output

一个数字,表示合法的方案数。答案对10 ^ 9 + 7取模。

Sample Input

5 2
7 4

Sample Output

54
1728

Hint

1 <= n <= 10 ^ 18

1 <= k <= min(8,n)

题解

很显然这道题我们要分治考虑,即分为$[1,k]$和$[k+1,n]$两个区间的点来计算。

首先我们很容易的知道后面这个区间的个数是${(n-k)}^{n-k}$,因为后面的点不能与$[1,k]$的点连,并且可以随便连,不用管是否连通。

那么我们现在考虑前面的$k$个点。我们想:首先这个图是一个典型的基环内向树,既然所有的点都能到达$1$号点,那么这个$1$号点肯定在基环上,并且整个图都是连通的。

我们来考虑这个问题:怎样构成这个图呢?

我们先假设只有$n-1$条边,那么使图要连通的话,显然构成了一棵树且根节点为$1$;因为边是有向的,显然所有边的方向是从儿子节点到父节点。

现在我们加上忽略的这条边,显然我从$1$号根节点连向任意一个节点都是可以的(包括根节点)。

我们拓展到一般的情况如果$1$号点不一定是根节点:那么我们只要把根节点连向$1$号点的位置就可以了。

我们得出这样一个结论:只要构成了一棵树,我都有方法使它满足条件,并且无论根节点是什么。并且我们能够得到,一个无向树确定了根节点,我都有办法确定方向使它们指向根。

带编号的点的无根生成树我们想到了$Cayley$公式,不知道的可以戳我之前写的一篇博客:->戳我<-

我们可以得到$n^{n-2}$棵无根树,并且我所有的点都可以确立为根,那么在每种形态下,我又有了$n$个版本。

那么前一部分的方案数就是$k^{k-1}$。

根据乘法原理:最终答案就是$k^{k-1}*{(n-k)}^{n-k}$。

 //It is made by Awson on 2017.10.12
#include <set>
#include <map>
#include <cmath>
#include <ctime>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define Min(a, b) ((a) < (b) ? (a) : (b))
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define sqr(x) ((x)*(x))
using namespace std;
const LL MOD = 1e9+; LL n, k; LL quick_pow(LL a, LL b) {
LL sum = ;
a %= MOD;
while (b) {
if (b&) sum = sum*a%MOD;
b >>= ;
a = a*a%MOD;
}
return sum;
}
void work() {
scanf("%lld%lld", &n, &k);
LL ans1 = quick_pow(k, k-);
LL ans2 = quick_pow(n-k, n-k);
printf("%lld\n", ans1*ans2%MOD);
}
int main() {
work();
return ;
}

[Luogu 2817]宋荣子的城堡的更多相关文章

  1. [Luogu] P2817 宋荣子的城堡

    题目描述 saruka有一座大大的城堡!城堡里面有n个房间,每个房间上面都写着一个数字p[i].有一天,saruka邀请他的小伙伴LYL和MagHSK来城堡里玩耍(为什么没有妹子),他们约定,如果某一 ...

  2. P2817 宋荣子的城堡

    P2817 宋荣子的城堡一道找规律的题,现在深入追究发现了有趣的东西.1 12 23 94 64显然k^(k-1) 在日照的时候也推出来了.3 9今天推错了,要列出所有的情况,然后再选,否则会漏掉.答 ...

  3. [luogu] P3202 [HNOI2009]通往城堡之路(贪心)

    P3202 [HNOI2009]通往城堡之路 题目描述 听说公主被关押在城堡里,彭大侠下定决心:不管一路上有多少坎坷,不管城堡中的看守有多少厉害,不管救了公主之后公主会不会再被抓走,不管公主是否漂亮. ...

  4. [Luogu 2816]宋荣子搭积木

    Description saruka非常喜欢搭积木,他一共有n块积木.而且saruka的积木很特殊,只能一块块的竖着摞,可以摞很多列.说过saruka的是特殊的积木了,这些积木都非常智能,第i块积木有 ...

  5. 洛谷—— P1457 城堡 The Castle

    https://www.luogu.org/problem/show?pid=1457 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特 ...

  6. VIJOS-P1059 积木城堡

    洛谷 P1504 积木城堡 https://www.luogu.org/problem/P1504 JDOJ 1240: VIJOS-P1059 积木城堡 https://neooj.com/oldo ...

  7. P1504 积木城堡

    原题链接  https://www.luogu.com.cn/problem/P1504 闲话时刻 这道题是一道 暴力 dp好题,dp 的方法和平常的不大一样,也许是我的脑回路清奇,总之还是值得做一下 ...

  8. Luogu 魔法学院杯-第二弹(萌新的第一法blog)

    虽然有点久远  还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题  沉迷游戏,伤感情 #include <queue> ...

  9. luogu p1268 树的重量——构造,真正考验编程能力

    题目链接:http://www.luogu.org/problem/show?pid=1268#sub -------- 这道题费了我不少心思= =其实思路和标称毫无差别,但是由于不习惯ACM风格的题 ...

随机推荐

  1. C语言程序设计(基础)- 第4周作业

    一.PTA作业 完成PTA第四周作业中8个题目,并将其中4个题目的思路列在博客中. 1.7-1 计算分段函数[1] 2.7-2 A除以B 3.7-6 阶梯电价 4.7-7 出租车计价 随笔具体书写内容 ...

  2. css变化代码2

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8" />   ...

  3. SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功

    [用户单位] 中国联通某分公司[数据恢复故障描述]    SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLAR ...

  4. String s=new String("abc")产生了几个对象?[权威面试版]

    以下总结是我逛论坛 将零零碎碎的知识整理起来,方便自己记忆和阅读,顺便分享出来给大家学习. 若 String s=new String("abc"); 为第一句代码 则会产生两个对 ...

  5. mosquitto验证client互相踢

    cleint11A订阅topic#################################################### server发送topic消息 ############### ...

  6. 阿里云API网关(11)外网访问 阿里云API网关内定义的API步骤:

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  7. Spring Security入门(3-3)Spring Security 手工配置并注入 authenticationProvider 和 异常信息传递

    特别注意的是 这样就能保证抛出UsernameNotFoundException时,前台显示出错信息: 另外,ps:

  8. OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)

    授权方式2-简化模式(implicit grant type) 简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授 ...

  9. linux压缩相关命令

    http://blog.csdn.net/mmllkkjj/article/details/6768294

  10. python3.6执行pip3时 Unable to create process using '"'

    问题需求 由于在windows操作系统中已经安装了python2.7,要在安装python3的时候 将python3.6安装在C:\Python36目录下 然后进入C:\Python36目录下执行pi ...