Luogu P11159 【MX-X6-T5】再生 题解
简单数学题。
首先根不同肯定是在诈骗,最长的链的链顶就是树根。然后考虑一条长链内,除了链顶都可以随意排序,对于每条链,答案乘上链中元素数量减一的阶乘。
然后考虑把这些链提取出来,重新拼接成一棵树。注意到如果先拼短链再拼长链,长链会影响到短链,限制较多,而先拼长链再拼短链限制更容易满足,考虑先拼长链。
对于每一条拼过的链,为了满足其长链剖分性质,如果这条链的长度为 \(siz[i]\),则长度为 \(siz[j]\) 的新拼的链只能拼在较高的 \(siz[i]-siz[j]\) 个位置中,否则会破坏长链剖分性质。不难发现对于每一条拼过的链都有这个限制,而我们已经拼上去的链的总长度是已知的,拼过的链的数量也是已知的,所以减去的总量也是已知的,两者做差就是这条链的拼接方案数,乘法原理贡献到答案里即可。
#include <bits/stdc++.h>
using namespace std;
long long n,a[600000],c[600000],s[600000],jc[600000],siz[600000],ans=1,cnt=0;
const long long mod=20051131;
int main()
{
scanf("%lld",&n);
jc[0]=1;
for(int i=1;i<=n;i++)jc[i]=jc[i-1]*i%mod,siz[i]=0;
for(int i=1;i<=n;i++)scanf("%lld",&a[i]),siz[a[i]]++;
for(int i=1;i<=n;i++)
{
if(siz[i]==0)continue;
c[++cnt]=siz[i],ans=ans*jc[siz[i]-1]%mod;
}
sort(c+1,c+cnt+1);
for(int i=cnt;i>=1;i--)s[i]=s[i+1]+c[i];
for(int i=1;i<=cnt-1;i++)ans=ans*(s[i]-(cnt-i+1)*c[i])%mod;
printf("%lld\n",ans);
return 0;
}
Luogu P11159 【MX-X6-T5】再生 题解的更多相关文章
- 【luogu P2324 [SCOI2005]骑士精神】 题解
题目链接:https://www.luogu.org/problemnew/show/P2324 不懂怎么剪枝,所以说,,我需要氧气.. 第一道A* // luogu-judger-enable-o2 ...
- luogu NOIp热身赛(2018-11-07)题解
为什么前面的人都跑得那么快啊? QAQ T1:区间方差 题目大意:询问区间方差,支持单点修改 首先把方差的式子展开,得到 $$d = \frac{a_1 + ... a_n}{n} - \frac{a ...
- 【luogu P1955 [NOI2015]程序自动分析】 题解
题目链接:https://www.luogu.org/problemnew/show/P1955 并查集操作,1e9要离散化,数组要开大一些,操作前先执行合并操作 样例好毒啊(全是排好序的) #inc ...
- 【luogu P2195 HXY造公园】 题解
题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...
- 【luogu P1073 最优贸易】 题解
题目链接:https://www.luogu.org/problemnew/show/P1073 对于状态量相互影响的题目,分层图是个不错的想法. 考虑在题目中分为: 不交易: 直接从1到n出去,为0 ...
- 【luogu P3393 逃离僵尸岛】 题解
题目链接:https://www.luogu.org/problemnew/show/P3393 被占领的点可以先连在一个点上然后只需要对这一个点bfs一遍就可以求所有的危险点 #include &l ...
- 【luogu P4017 最大食物链计数】 题解
题目链接:https://www.luogu.org/problemnew/show/P4017 DAG + DP #include <queue> #include <cstdio ...
- 【luogu P1351 联合权值】 题解
题目链接:https://www.luogu.org/problemnew/show/P1351 做了些提高组的题,不得不说虽然NOIP考察的知识点虽然基本上都学过,但是做起题来还是需要动脑子的. 题 ...
- 【luogu P3623 [APIO2008]免费道路】 题解
题目链接:https://www.luogu.org/problemnew/show/P3623 说是对克鲁斯卡尔的透彻性理解 正解: 先考虑加入水泥路,然后再考虑加入剩下必须要加入的最少鹅卵石路. ...
- BZOJ3209(luogu 4317)花神的数论题题解
题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...
随机推荐
- Greenplum数据库时间操作汇总
Greenplum数据库时间操作与mysql有一些区别,汇总以往笔记记录下来. greenplum时间格式:'yyyy-mm-dd hh24:mi:ss.us'.'yyyy-mm-dd hh:mi:s ...
- 配置springmvc的springmvc.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- RSA 加密及一些攻击方式
本文章转载自个人博客seandictionary.top同步更新可能不及时 原理 随机生成两个素数,p , q 令n = p*q 由欧拉公式计算出φ(n) = (p-1)(q-1) 规定e,使得e满足 ...
- 🎀dubbo QOS介绍及命令
简介 在Dubbo中,QoS(Quality of Service)功能是一个非常重要的特性,用于提供对运行时服务的查询和控制能力. QoS的概念源自网络设备中的服务质量保障机制,但在Dubbo中,它 ...
- React项目报错:Element type is invalid: expected a string可能的原因
React项目报错:Element type is invalid: expected a string 起因:React使用Antd组件库,因为某些原因实在用不下去了,代码不变直接改成Tdesig ...
- jstree上手文档 [初始化时默认选中、全部展开、获取实例的数据等问题]
jstree官网:https://www.jstree.com/ ------------------- 实例化tree .jstree() 默认样式: var container = $('#xxx ...
- AWVS(Acunetix)
网络安全渗透测试-AWVS(Acunetix)漏洞扫描工具安装与使用教程 AWVS安装与激活 AWVS简介 AWVS(Acunetix Vulnerability Scanner)是一款网络漏洞扫描工 ...
- 【记录】MATLAB矩阵的批量元素修改方式,与Python的NumPy对比
文章目录 二维矩阵 操作 1. 将数组大于0的数全部加1 2. 删除元素 ①删除单个元素 ②删除一列元素 3. 添加一行或多行 ①添加一行 ②添加多行 4. 获取行/列数 5. 格式化输出数组 结构数 ...
- 定制Django的Tag和Filter(一)
1.在 app 目录下创建 templatetags 目录(目录名只能是 templatetags). 如: app/ __init__.py models.py templatetags/ __in ...
- System.currentTimeMillis()高并发性能优化
摘要:System.currentTimeMillis()性能问题的研究.测试与优化. 性能优化使用的测试环境: jdk版本jdk8 操作系统: macOS 版本:13.2.1 芯片: App ...