首页 > 其他分享 >Hydro #4766. 文艺计算姬 题解--zhengjun

Hydro #4766. 文艺计算姬 题解--zhengjun

时间:2023-07-04 21:44:06浏览次数:46  
标签:-- 题解 ll zhengjun ans 序列 using Prufer

link

前置知识:Prufer 序列,二分图

别的题解都是直接给答案,没有比较易懂的思路。

首先,考虑 Prufer 序列,发现右边点删除一定会加入一个左边点,另一边类似。

且生成 Prufer 序列的最后一定会留下左右边各一个点。

所以左边点在 Prufer 序列中出现的次数即为 \(m-1\),右边即为 \(n-1\)。

所以这样看似乎有 \({{n+m-2}\choose{n-1}}\times n^{m-1}\times m^{n-1}\) 种 Prufer 序列。

然而这样并不正确,因为会算重,例如:

image

image

它们的 Prufer 序列分别为 411141,但是,这两个实际上对应着同一张二分图。

这里的【二分图不同】指的是区分同侧的点,不区分两侧的点

本质上就是说,如何规定左右两边点的编号固定。

可以这样构造:

  • 每次选个数多的一边,若两边个数一样就选和上次不一样的
  • 找到这一边的最小叶子编号的节点删除

容易得到这样构造个数多的一边一定有叶子,且不同的方案对应不同的删除顺序。

反之,对于一个长度为 \(m-1\),值域为 \([1,n]\cap N\) 的序列 \(a\),以及另一个序列 \(b\)。

不妨认为 \(n\le m\),则先从 \(a\) 开始,计算度数,选出 \(b\) 中度数为 \(1\) 的最小编号节点与 \(a_i\) 连边,然后换到另一侧进行,最后剩下的两个点直接相连即可。

这样每个点仅有一个父亲,容易发现是一颗树,且不同的序列页对应着不同的树。

于是,可以建立起两者的双射。

故答案即为 \(n^{m-1}\times m^{n-1}\)。

代码

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using big=__int128;
ll n,m,mod;
ll mul(ll x,ll y){
	return (big)x*y%mod;
}
ll qpow(ll x,ll y){
	ll ans=1;
	for(;y;x=mul(x,x),y>>=1)if(y&1)ans=mul(ans,x);
	return ans;
}
int main(){
	cin>>n>>m>>mod;
	cout<<mul(qpow(n,m-1),qpow(m,n-1));
	return 0;
}

标签:--,题解,ll,zhengjun,ans,序列,using,Prufer
From: https://www.cnblogs.com/A-zjzj/p/17526938.html

相关文章

  • 频率计
    等精度测量传统......
  • android Toast大全(五种情形)建立属于你自己的Toast
    Toast大全(五种情形)建立属于你自己的Toast Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。 1.默认效果 Java代码  1.Toast.makeText(getApplicationContext(),"默认Toast样式",Toast.LENGTH_......
  • 搞定MySQL,都是干货
    MySQL数据库简介MySQL近两年一直稳居第二,随时有可能超过Oracle计晋升为第一名,因为MySQL的性能一直在被优化,同时安全机制也是逐渐成熟,更重要的是开源免费的。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高......
  • [Unity3D]Unity+Android交互教程——让手机"动"起来
    更多教程请访问:http://dingxiaowei.cn/ 想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是没反应,没办法看源码,结果发现只实现了IOS部分,没有Android部......
  • android tts语音使用的一些资料(转)
     TextToSpeech简称TTS,是Android1.6版本中比较首要的新功能。将所指定的文本转成不同语言音频输出。它可以方便的嵌入到游戏或者使用程序中,增强用户体验。   在讲解TTSAPI和将这项功能使用到你的实际项目中的要领之前,先对这套TTS引擎有个初步的明白。 对TTS资源的大......
  • android 音标的抓取 腾讯在线词典API
       DICT.CN的webAPI已经close了,本想好,调用下接口把读音给抓下来。幸好,网上还是有好多的资源可以用的。昨天回去的时候,做了一个QQ的word抓音标的例子,还是大公司好,虽然非常的BS腾讯这狗抄袭人家的创意甚至是产品。 下面是几个开发的API测试了了是用于用的,但是你的程序中,文件......
  • 图灵喜获Stevens名著《TCP/IP Illustrated》影印版权
    图灵再获得培生教育出版集团授权,即将出版《TCP/IP详解》(3卷)的影印版。此前,图灵在2006年先后出版了《Unix环境高级编程(第2版)》的影印版和翻译版。并于2009年11月推出了《UNIX网络编程》(2卷)的影印版。后者的翻译版正在翻译校订中,预计2010年5-6月出版。《TCP/IP详解》影印版将于2010......
  • android 基于ListView和CheckBox实现多选和全选记录的功能(转)
    [原]基于ListView和CheckBox实现多选和全选记录的功能应用开发中经常会有从数据库中读取数据显示,然后选中多条、全部记录并且删除的需求。在做定制系统联系人的时候也遇到这样的需求,下面写个简单的通过ListView和CheckBox实现多选、全选的例子。下面是具体的代码,有问题请留言。代......
  • 如何保持缓存和数据库中的数据一致
    背景缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案。缓存是什么存储的速度是有区别的。缓存就是把低速存储的结果,临时保存在高速存储的技术。......
  • 异常机制
    异常机制本质当程序出现异常,程序安全的退出、处理完后继续执行的机制异常(Exception)的概念异常指程序运行过程中出现的非正常现象,例如除数为零、需要处理的文件不存在、数组下标越界等。在Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了......