首页 > 其他分享 >9.12 模拟赛

9.12 模拟赛

时间:2024-09-12 13:52:31浏览次数:1  
标签:dots 13 sum 9.12 答案 lcm operatorname 模拟

B. la

题意:给定 \(n, m\) 和 \(1 \sim m\) 的排列 \(b\)。有一个长度为 \(n\) 的数组 \(a\),所有 \(a_i\) 的值在 \([1, m]\) 中随机。定义一次变换为同时对所有 \(i \in [1, n]\) 执行 \(a_i \gets b_{a_i}\)。求期望多少次能将所有 \(a\) 变回原样。

首先将期望转化成答案总和除以 \(m^n\)。

考虑连边 \(i \to b_i\),表示若 \(x = i\) 则 \(x\) 可以通过一次变换成为 \(b_i\)。

因为 \(b\) 是个排列,且 \(i\) 互不相同,所以图中所有点的入度和出度都为 \(1\)。也就是说整张图是由若干个环构成的。当然也包括自环。

令某个环的大小为 \(s\)。那么这个环上的任意一个点都可以通过 \(s \times k\)(\(k \in \mathbb N\))次变换回到开始。

所以若我们令 \(i\) 所在的环的大小为 \(w_i\),那么当 \(a\) 确定时答案为 \(\operatorname{lcm}(w_{a_1}, w_{a_2}, \dots, w_{a_n})\)。

暴力枚举 \(a\) 显然不行。考虑优化。

思考 \(\operatorname{lcm}\) 的性质。这个运算关注的是一个数字是否出现过,而跟这个数字出现的次数没有关系。例如 \(\operatorname{lcm}(3, 5, 7) = \operatorname{lcm}(3, 5, 7, 7, 7) \ne \operatorname{lcm}(3, 5)\)。

注意到 \(m \le 100\)。这意味着图中环的长度只有不超过 \(13\) 种。因为 \(1 + 2 + \dots + 13+14 = 105 > m\)。注意这里说的是长度的种类数而不是环的个数。

所以我们要计算的答案 \(\operatorname{lcm}(w_{a_1}, w_{a_2}, \dots, w_{a_n})\) 里,集合 \(\{w_{a_1}, w_{a_2}, \dots, w_{a_n}\}\) 的大小不超过 \(13\)。所以我们可以以 \(2^{13}\) 的复杂度枚举这个集合!算出 \(\operatorname{lcm}\) 后再算一个方案数乘起来就是答案!

具体的,我们枚举环长集合(即每种环的长度构成的集合)的子集 \(S\)。若我们能计算出有多少个 \(a\),使得每个 \(a_i\) 都满足 \(w_{a_i} \in S\),且对于每个 \(v \in S\) 都存在至少一个 \(a_i = v\)。那么这样的 \(a\) 的数量与 \(\operatorname{lcm}_{v \in S} v\) 的乘积再累加即可计算最终答案。

有点抽象。我们再明确一下当前的任务:

  • 计算有多少个 \(a\),满足:
    • 对于每个 \(a_i\) 都满足 \(w_{a_i} \in S\);
    • 且对于每个 \(v \in S\) 都存在至少一个 \(a_i = v\)。(这个条件如果不满足就无法保证 \(\operatorname{lcm}a = \operatorname{lcm}S\)。)

我们预处理一个 \(c_i\) 表示多少 \(j\) 满足 \(i=w_j\),即每种长度的所有环内的点的数量。

没有第二个条件很好做。答案是 \((\sum_{v \in S}c_v)^n\)。这是因为 \(a\) 的每一位都有 \(\sum_{v \in S}c_v\) 种方案。令 \(g(S) = (\sum_{v \in S}c_v)^n\)。

我们令有了第二个条件后的答案为 \(f(S)\)。那么可以容斥。即:

\[f(S) = \sum_{T \subseteq S} (-1)^{|S| - |T|}g(S) \]

所以答案为:

\[\sum_{S \subseteq U} f(S) \times \operatorname{lcm}_{v \in S}v \]

标签:dots,13,sum,9.12,答案,lcm,operatorname,模拟
From: https://www.cnblogs.com/2huk/p/18410030

相关文章

  • 24.9.12——小学期开发实记
    今天做了什么:  今天复刻了团队成员之前实现的”选择“功能。继续将已画好的界面添加上这个功能。遇到什么问题:  一开始添加数据信息后,一直报错:index.vue:224:48Uncaught(inpromise)TypeError:Cannotreadpropertiesofundefined(reading'then')atindex.vue:......
  • 在线考试|基于java的模拟考试系统小程序(源码+数据库+文档)
    在线考试|模拟考试系统|模拟考试系统小程序目录基于java的模拟考试系统小程序一、前言二、系统设计三、系统功能设计四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专......
  • 9.11 模拟赛(炼石计划 11 月 05 日 NOIP 模拟赛 #17)
    炼石计划11月05日NOIP模拟赛#17【补题】-比赛-梦熊联盟(mna.wang)概况预计\(50+[20,36]+20+10=[100,116]\)。实际\(35+36+20+0=91\)。挂飞了/qq最后补题\(50+100+20+10=180\)。T2用std跑了较大数据终于找到了规律!!!T1是笛卡尔树的高级应用,于是先学一手......
  • 20240911 模拟赛总结
    期望得分:100+0+30=130实际得分:100+20+30=150T1感觉没有大样例也还是可以猜到那么一点的结论。k=0无解。当k≠0时,考虑交换不含1的两项,一定能使这两个位置都符合gcd(i,ai)=1,如果最后长度为奇数剩一个位置出来怎么办?那就O(n)枚举一遍找到可行的位置和它换一下即可,易......
  • C++模拟实现stack和queue(容器适配器)
    适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。简单理解,将模板参数给成容器,就是容器适配器,写成参数的容器的各种接口,均满足需要。#include<list>#includ......
  • [NOIP 2024 模拟1]zyc大吃特吃
    [NOIP2024模拟1]zyc大吃特吃题意给出两个序列\(a,b\),给出两个数\(A,B\)。求最多选出多少个数,使得刚好不满足\(\suma_i\leA\)且\(\sumb_i\leB\)。思路先考虑暴力dp,定义\(dp_{i,j}\)表示选出的数\(a\)的和等于\(i\),选出的数\(b\)的和等于\(j\),最多选出的数......
  • [NOIP 2024 模拟1]zyc不能大吃特吃
    [NOIP2024模拟1]zyc不能大吃特吃题意给出两个序列\(a,b\),给出两个数\(A,B\)。求最少选出多少个数,使得刚好不满足\(\suma_i\leA\)且\(\sumb_i\leB\)。思路贪心,\(A\)和\(B\)有一个超出即可。将序列分别按\(a\)和\(b\)排序,看那个能选的最少。代码#include......
  • [NOIP 2024 模拟1]xuan大唱特唱
    [NOIP2024模拟1]xuan大唱特唱题意给定\(n\)个点,第\(i\)个点坐标为\(x_i\)。有\(q\)次询问,每次给定\(b_i,k_i\)。求离坐标为\(b_i\)的点第\(k_i\)近的点与\(b_i\)的距离。思路二分答案\(d\),考虑如何判断。若与\(b_i\)的距离小于\(d\)的点的个数小于\(......
  • 2024.9 模拟赛日志
    目录NOD2301(20240904)NOD2304(20240905)2024年广州市赛第一试(20240907)2024年广州市赛第二试(20240908)金华一中24联训day15(20240910)SS240911(20240911)NOD2301(20240904)[A日记和最短路]字符串字典序题,\(a<b\iffc+a<c+b\),在Trie上维护倍增的哈希值。[B日记和欧拉函数]\(\varphi(......
  • PMP模拟考试第48题笔记
    注:quiteresistan 相当抵抗 originally 起初engage参与stakeholderengagementassessmentmatrix 利益相关者参与评估矩阵assessment 评估riskregister  风险登记册stakeholderoutlining  利益相关者概述在管理大型项目时,处理利益相关者的支持和抗拒......