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】再生 题解的更多相关文章

  1. 【luogu P2324 [SCOI2005]骑士精神】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2324 不懂怎么剪枝,所以说,,我需要氧气.. 第一道A* // luogu-judger-enable-o2 ...

  2. luogu NOIp热身赛(2018-11-07)题解

    为什么前面的人都跑得那么快啊? QAQ T1:区间方差 题目大意:询问区间方差,支持单点修改 首先把方差的式子展开,得到 $$d = \frac{a_1 + ... a_n}{n} - \frac{a ...

  3. 【luogu P1955 [NOI2015]程序自动分析】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1955 并查集操作,1e9要离散化,数组要开大一些,操作前先执行合并操作 样例好毒啊(全是排好序的) #inc ...

  4. 【luogu P2195 HXY造公园】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...

  5. 【luogu P1073 最优贸易】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1073 对于状态量相互影响的题目,分层图是个不错的想法. 考虑在题目中分为: 不交易: 直接从1到n出去,为0 ...

  6. 【luogu P3393 逃离僵尸岛】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3393 被占领的点可以先连在一个点上然后只需要对这一个点bfs一遍就可以求所有的危险点 #include &l ...

  7. 【luogu P4017 最大食物链计数】 题解

    题目链接:https://www.luogu.org/problemnew/show/P4017 DAG + DP #include <queue> #include <cstdio ...

  8. 【luogu P1351 联合权值】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1351 做了些提高组的题,不得不说虽然NOIP考察的知识点虽然基本上都学过,但是做起题来还是需要动脑子的. 题 ...

  9. 【luogu P3623 [APIO2008]免费道路】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3623 说是对克鲁斯卡尔的透彻性理解 正解: 先考虑加入水泥路,然后再考虑加入剩下必须要加入的最少鹅卵石路. ...

  10. BZOJ3209(luogu 4317)花神的数论题题解

    题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...

随机推荐

  1. 第八届机械工程与应用复合材料国际会议(MEACM 2025)

    第八届机械工程与应用复合材料国际会议(MEACM 2025) 吉隆坡,马来西亚 2025年8月25-27日 会议简介:2025年第八届机械工程与应用复合材料国际会议(MEACM 2025)将于2025 ...

  2. sql查询语句典例整理

    简单查询: 1.SELECT * FROM 表名称 WHERE 字段名 LIKE '查询内容' 1). SELECT * FROM member WHERE NickName LIKE '贝克汉姆': ...

  3. 康谋方案 | 基于AI自适应迭代的边缘场景探索方案

    构建巨量的驾驶场景时,测试ADAS和AD系统面临着巨大挑战,如传统的实验设计(Design of Experiments, DoE)方法难以有效覆盖识别驾驶边缘场景案例,但这些边缘案例恰恰是进一步提升 ...

  4. Spring 如何解决循环依赖?

    Spring通过三级缓存机制来解决单例Bean的Setter或字段注入类型的循环依赖问题.以下是Spring解决循环依赖的核心流程: 1. 三级缓存介绍 Spring容器为了解决循环依赖,维护了以下三 ...

  5. 什么是 Write-Ahead Logging (WAL) 技术?它的优点是什么?MySQL 中是否用到了 WAL?

    什么是 Write-Ahead Logging (WAL) 技术? Write-Ahead Logging (WAL) 是一种用于数据库系统的日志记录技术,它要求在对数据库进行任何修改之前,所有的修改 ...

  6. 牛逼,这款开源聊天应用竟能一键召唤多个AI助手,跨平台通话神器!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 JiwuChat是一款基于Tauri2和Nuxt3构建的轻量化多平台即时通讯工具,仅约8MB ...

  7. 代码随想录第二十一天 | Leecode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树

    Leecode 669. 修剪二叉搜索树 题目描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修 ...

  8. C#网络编程(三)----HTTP协议

    HTTP协议 HTTP(超文本传输协议),属于应用层协议.基于TCP连接实现.但通信方向始终由客户端发起(HTTP/2之后已修改). 维度 TCP/IP协议族(传输层/TCP) HTTP协议(应用层) ...

  9. Manim实现旋转变色特效

    在数学动画的世界里,旋转与变色特效无疑是最能吸引观众眼球的元素之一. 今天,就让我们一起探索如何使用Manim框架来实现自定义的旋转变色特效吧! 1. 实现原理 Manim的动画魔法源于Animati ...

  10. P7185 [CRCI2008-2009] CIJEVI

    hack&&虐题解爽! 私题里有 \(3\) 组 hack. 还得是中模拟. 从 M 或者 Z 遍历整个管道,若遇到断点.断点有两种情况,若与 M 或者 Z 不直接接触,枚举附近的一个 ...