来源:2020 年百度之星·程序设计大赛 - 初赛一

一个圈,从内到外一共被分成了 \(n\) 个环,中间是空的。

我们把从外到内第 \(i\) 层环平分成 \(a[i]\) 份,其中 \(a[i]\) 是偶数,我们把这 \(a[i]\) 份黑白染色,第奇数个染成黑色,第偶数个染成白色。

现在我们旋转每一层,每一层都会等概率随机到一个中止位置。

问黑色的联通块数目的期望。两块黑色的区域有交点即算联通。层之间的旋转是相互独立的。

\(1\le n\le 10,1\le a_i \le 1000,1\le T\le10,a_i\) 是偶数且不降

因为 \(a_i\) 为偶数且不降,可以发现相邻的黑块连边如同一棵树一样

\[连通块数量 = 所有层的黑块数目 - 每层之间的黑边
\]

黑块的数目和为 \(\sum\limits_{i = 1}^n \frac{a_i}2\) ,考虑每层黑边的期望数目

对于任意两层的任意两个黑块,他们相交的概率是 \(\frac{1}{a_i} + \frac{1}{a_{i + 1}}\) ,乘上他们的块数,就是期望的相交个数。

\[\sum\limits_{i = 1}^n \frac{a_i}2-\sum_{i=1}^{n-1}(\frac{1}{a_i} + \frac{1}{a_{i + 1}})\frac{a_i}2\frac{a_{i + 1}}2 = \frac{a[1]+a[n]}{4}
\]

最后的式子由费马小定理可知当 \(p\) 为质数时: \(\frac{a[1]+a[n]}{4} = a[1]\times a[n] \times pow(4,p-2) \ mod\ p\)


代码 注意防止溢出
const int N = 1010, mod = 1e9 + 7;
int a[N];
ll qpow(ll a, ll b, ll p) {
ll ans = 1;
for (; b; b >>= 1, a = a * a % p)
if (b & 1)ans = ans * a % p;
return ans;
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n;
cin >> n;
for (int i = 1; i <= n; i += 1) cin >> a[i];
ll ans = 0;
cout << ((a[1] + a[n]) * qpow(4, mod - 2, mod) % mod) << "\n";
}
}

题解 [HDU6747] Rotate 期望 + 逆元的更多相关文章

  1. LeetCode题解:Rotate List

    Rotate List Given a list, rotate the list to the right by k places, where k is non-negative. For exa ...

  2. LeetCode题解之Rotate Array

    1.题目描述 2.代码 void rotate(vector<int>& nums, int k) { ) return ; && (k / nums.size() ...

  3. 洛谷 P5249 [LnOI2019]加特林轮盘赌 题解【概率期望】【DP】

    很有意思的题目. 题目背景 加特林轮盘赌是一个养生游戏. 题目描述 与俄罗斯轮盘赌等手枪的赌博不同的是,加特林轮盘赌的赌具是加特林. 加特林轮盘赌的规则很简单:在加特林的部分弹夹中填充子弹.游戏的参加 ...

  4. HDU 5984 题解 数学推导 期望

    Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative s ...

  5. 【洛谷P3802】小魔女帕琪 题解(概率期望)

    前言:蒟蒻太弱了,不会推式子QAQ -------------------- 题目链接 题目大意:给定$7$种能量晶体各$a_i$个,每次随机摸到一个晶体,如果连续摸到$7$个不同的晶体就会触发一次伤 ...

  6. LeetCode 题解之Rotate List

    1.题目描述 2.题目分析 首先数出链表中的元素个数count,然后对k = k % count 求余数.接着将链表形成一个环,从最后一个元素开始,运动 count - k  步,此时节点的下一个节点 ...

  7. LeetCode题解之Rotate String

    1.题目描述 2.问题分析 直接旋转字符串A,然后做比较即可. 3.代码 bool rotateString(string A, string B) { if( A.size() != B.size( ...

  8. Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划

    3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 431  Solved: 325[Submit][Status] ...

  9. 【ZOJ 3609】Modular Inverse 最小乘法逆元

    The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x  ...

  10. [JLOI2012]时间流逝 树上高斯消元 概率期望

    题面 题意:(感觉题面写的题意是错的?)有\(n\)种能量不同的圈,设当前拥有的圈的集合为\(S\),则: 1,每天有\(p\)概率失去一个能量最小的圈.特别的,如果\(S = \varnothing ...

随机推荐

  1. Llinux登录后出现-bash-4.2#,解决办法以及造成这样的原因

    版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 1.原因是root在/root下面的几个配置文件丢失,丢失文件如下: 1..bash_profile 2..bashr ...

  2. 3款国产办公软件,不仅好用,还支持linux国产操作系统

    当提到国产办公软件并支持Linux国产操作系统时,以下是三款备受好评的软件: 1. WPS Office(金山办公套件) WPS Office是中国知名的办公软件套件,也是一款跨平台的应用程序.它包含 ...

  3. influxdb: unable to parse points 异常解决总结

    转载请注明出处: influxdb 使用过程经常遇到:unable to parse points  的异常:  unable to parse points 是 InfluxDB 抛出的异常,表示无 ...

  4. windows中MySQL忘记密码

    前言:   一直都是连接公司项目数据库,许久未连接本地的数据库,密码忘记了 步骤: 进入本机安装mysql的bin目录下 暂停mysql服务 net stop mysql 设置跳过密码授权登录  my ...

  5. java,ArrayList类

    ArrayList 是一个数组列表,可以将多个对象放入数组中,是一个长度可变的集合,提供了增删改查的功能. public class Test2 { public static void main(S ...

  6. ncurses 与 panel

    ncurses 与 panel 一下是ncurses使用面板库panel的一个demo程序. #include <ncurses.h> #include <panel.h> # ...

  7. Spring MVC 源码解析

    本文的 MVC 基于传统的 Servlet 应用,所使用的 Spring Web 的环境为 Spring Boot 2.5.2 静态资源的加载 参考 Spring Boot 中给出的文档,原文如下: ...

  8. MongoDB 安装、配置及详细使用教程

    环境:win10 下载地址 :https://pan.baidu.com/s/1a0SwRv9er3HTewzcI8nWgQ      提取码:dyyx   下载后,将该文件夹放在C盘的根目录下,然后 ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题

    文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题 二.试分析在使用下列循环不变量时,HEAPSORT 的正确性:在算法的第 2~5行 for 循环每次迭代开始时,子数 ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (56)-- 算法导论6.3 2题

    文心一言 VS 讯飞星火 VS chatgpt (56)-- 算法导论6.3 2题 对于 BUILD-MAX-HEAP 中第 2行的循环控制变量 i 来说,为什么我们要求它是从A.length/2到1 ...