来源: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. 嵌入式linux主机通过分区镜像生成固件,DD备份分区后打包成固件,px30刷机教程 ,rockchip刷机教程

    我这边有一个工控路由器因为刷机变砖了,网上下载不到固件,自己暂时还没有搞过编译.我找到了同型号的路由器,把它的系统制作成镜像. 具体操作分为三步: 第一步,直接用DD命令备份了几个分区,分区我暂时还不 ...

  2. 现代统计分析软件Datainside在学生成绩分析中的应用

    Datainside(薪火数据)是一款非常常用的统计分析软件,广泛应用于学术研究和商业领域. 在学生成绩分析方面,Datainside提供了丰富的功能和工具,可以帮助教育机构和研究人员深入理解学生的学 ...

  3. Excel 中使用数据透视图进行数据可视化

    使用数据透视表(PivotTable)是在Excel中进行数据可视化的强大工具.下面将提供详细的步骤来使用数据透视表进行数据可视化. **步骤一:准备数据** 首先,确保你有一个包含所需数据的Exce ...

  4. 吉特日化MES & RabbitMQ 的基本配置

    在吉特日化MES(日化配料系统)中涉及到大量的消息推送,其中针对设备数据的交互(读写) 大量使用了RabbitMQ来进行消息通讯以及程序上的解耦,其中包含使用PDA扫码登录到PLC控制程序,下发生产工 ...

  5. 记录一些JDK的新特性~持续更新

    1.record快速定义类 @Test public void testRecord() { /** * JDK16新特性 * * @param start * @param end */ recor ...

  6. 江西财经大学第一届程序设计竞赛 H题- 小P的数学问题

    题目链接:https://www.nowcoder.com/acm/contest/115/H 解题思路:分块打表!!! 什么是分块打表呢??? 从这道题我们知道我们要找到最多1*e9的阶乘 那循环暴 ...

  7. ASR项目实战-决策点

    针对语音识别的产品,分别记录设计.开发过程中的决策点. 实时语音识别 对于实时语音识别来说,客户端和服务端之间实时交换语音数据和识别的结果. 客户端在启动识别时,即开始发送语音数据,期望在等待较短的时 ...

  8. 【scikit-learn基础】--『监督学习』之 决策树回归

    决策树算法是一种既可以用于分类,也可以用于回归的算法. 决策树回归是通过对输入特征的不断划分来建立一棵决策树,每一步划分都基于当前数据集的最优划分特征.它的目标是最小化总体误差或最大化预测精度,其构建 ...

  9. 聊一聊如何结合Microsoft.Extensions.DependenyInjection和Castle.Core

    .net下 aop的实现AspectCore+Microsoft.Extensions.DependenyInjection.Autofac+Castle .DoraInterception+Micr ...

  10. POJ 2609 DP 双队列DP

    POJ 2609 DP 双队列DP 题意 给出队列容量与一组数,并且我们有两个这样容量的空队列,要求我们按照次序把数装进两个队列中,输出最多能装多少以及每个数装进哪个队列. 思路 由于按照次序来装,不 ...