[期望DP][纪中]【2010集训队出题】彩色圆环
彩色圆环
感谢名单
十分感谢 JA_Ma 为我讲解了 \(T1\) 的 期望DP 的思想和推论。
十分感谢 SSL_LYF 为我解答了 \(T1\) 的 期望DP 的概率的大小问题。
十分感谢 SSL_WJ 为我讲解了 高斯消元 的一些判断及一些基础知识。
(排名不分先后)
正文
T1

这道题已经告诉你是 期望DP 了, 主要是 状态转移方程 的推导和 最后的 ans 进行求值
我们先预处理出每个区间的概率 \(g_i\) 以便于状态转移时使用。
再解释一下 \(f_{i, 1/0}\) 表示的是什么
其实表示的就是在前 \(i\) 个数中, 第 \(i\) 个数于首尾交界点是(1)否(0)相同的期望值。
然后我们就考虑怎么转移。
我们把这个环切成切成一条链, 我们期望一个区间 [j, i] 都是同一个颜色的, 然后我们就以 \(f_{j, 0/1}\) 进行转移。 我们只需将转移的期望乘目前区间的贡献再乘上这个区间都是同色的概率再乘于 \(m\) 种颜色中颜色的概率
然后我们进行分类讨论。
我们先考虑当 \(1\) 点与首尾交界点(我们人为添加的点, 这个点并不存在于链当中)不同色的情况。
这个情况我们还可以分两种类, 就是 \(i\) 点和这个 \(1\) 点的颜色是否相同两个可能
可以得出转移方程:
\]
这个是色不同的, 因为总共有 \(m\) 个色, 所以就是 可选颜色数/m, 问题就是求可选色的数量。这里应为色不同, 所以就只有 \(m-1\) 中色可选, 又因区间 [j, i] 与 \(j-1\)前的区间的色也不一样(色一样的话这个区间就不之这么大了), 所以可选色只有 \(m-2\).
对于概率是 \(p_{i-j}\) 是因为他这个区间的色是相同的, 然后他的长度就为 \(i - j\), 所以这个区间他颜色相同的几率就是 \(p_{i - j}\), 而 \(i - j\) 就是这个区间的贡献
\]
这个和上面的情况极为相近, 但是因为他 \(i\) 点和这个 \(1\) 点的颜色是相同的, 就有了些变化。
可选颜色就是被 \(j-1\) 前的区间占了一个, 所以就还有 \(m-1\)个颜色可选, 因为 \(i\) 点和这个 \(1\) 点的颜色相同, 所以是从 \(f_{j, 1}\) 状态转移过来的。
然后我们考虑最后一种可能了, 就是 \(1\) 点与首尾交界点同色的情况。
因为期望还是转移的期望乘目前区间的贡献再乘上这个区间都是同色的概率再乘于 \(m\) 种颜色中颜色的概率, 所以就和前一个也是差不多, 其实就是
\]
不同就是因为他是同色, 所以就不用考虑占色的情况
然后就是重头戏, 计算答案了。
首先, 我们可以 \(O(1)\) 可以过 \(n\) 的情况, 应为就一个色, 所以就是贡献 \(n~*~p_n\) 的情况
然后就是 1~n-1 的答案计算了
首先是他计算的这个期望 \(f_{i, 0}\) 然后就是 他这个出现的几率, 然后就是他这个区间是有 \(n - i\) 个点, 每个点是都可以产生这么多的贡献的。 还有, 就是这个区间他是可以每一个节点都作为一个断点(即将这个环断成链的点), 所以还是要乘上 \(n - i\) 的, 所以可以得到
n~~*~~p[n]\\ \prod_{n-1}^{i = 1}~~f_{i,0}~~* ~~p_{n~~-~~i}~~*~~(n-i)~~*~~(n-i)
\end{matrix}\right.\]
Code
#include <bits/stdc++.h>
#define N 205
using namespace std;
int n, m;
double ans;
double f[N][2], p[N];
int main ()
{
scanf ("%d%d", &n, &m);
p[1] = 1.0;
f[0][1] = 1;
for (int i = 2; i <= n; ++ i)
p[i] = p[i - 1] * (1.0 / m);
for (int i = 1; i <= n; ++ i)
{
for (int j = 0; j < i; ++ j)
{
f[i][0] += f[j][0] * p[i - j] * (i - j) * (m - 2) / m;
f[i][0] += f[j][1] * p[i - j] * (i - j) * (m - 1) / m;
/*不同情况分割线*/
f[i][1] += f[j][0] * p[i - j] * (i - j) / m;
}
}
ans = n * p[n];
for (int i = 1; i < n; ++ i)
{
ans += f[i][0] * p[n - i] * (n - i) * (n - i);
}
printf ("%.7lf", ans);
return 0;
}
[期望DP][纪中]【2010集训队出题】彩色圆环的更多相关文章
- [JZOJ1904] 【2010集训队出题】拯救Protoss的故乡
题目 题目大意 给你一个树形的网络,每条边从父亲流向儿子.根节点为原点,叶子节点流向汇点,容量为无穷大. 可以给一些边扩大容量,最多总共扩大\(m\)容量.每条边的容量有上限. 求扩大容量后最大的最大 ...
- [JZOJ1901] 【2010集训队出题】光棱坦克
题目 题目大意 给你个平面上的一堆点,问序列\({p_i}\)的个数. 满足\(y_{p_{i-1}}>y_{p_i}\)并且\(x_{p_i}\)在\(x_{p_i-1}\)和\(x_{p_i ...
- [JZOJ1900] 【2010集训队出题】矩阵
题目 题目大意 题目化简一下,就变成: 构造一个\(01\)数列\(A\),使得\(D=\sum A_iA_jB_{i,j}-\sum A_iC_i\)最大. 问这个最大的\(D\)是多少. 正解 其 ...
- 从《彩色圆环》一题探讨一类环上dp的解法
清橙A1202 bzoj2201 bsoj4074 试题来源 2010中国国家集训队命题答辩 问题描述 小A喜欢收集宝物.一天他得到了一个圆环,圆环上有N颗彩色宝石,闪闪发光.小A很爱惜这个圆环,天天 ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- 纪中集训 Day1
今天早上起来吃饭,发现纪中伙食真的是太差了!!!什么都不热,早餐的面包还好,然后就迎来了美好的早晨= = 早上做一套题,T1T2果断秒,T3一看就是noi原题,还好看过题解会写,然后就愉快的码+Deb ...
- 高斯消元与期望DP
高斯消元可以解决一系列DP序混乱的无向图上(期望)DP DP序 DP序是一道DP的所有状态的一个排列,使状态x所需的所有前置状态都位于状态x前: (通俗的说,在一个状态转移方程中‘=’左侧的状态应该在 ...
- 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
随机推荐
- EVE-NG 入门教程 (Mac OSX BIg Sur)
EVE-NG 入门搭建指南 1. 什么是 EVE-NG EVE-NG (Emulate d Virtual Environment) 是一个可以运行虚拟主机.网络设备的模拟器,目前该软件分为了社区版. ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...
- Caffe实现概述
Caffe实现概述 目录 一.caffe配置文件介绍 二.标准层的定义 三.网络微调技巧 四.Linux脚本使用及LMDB文件生成 五.带你设计一个Caffe网络,用于分类任务 一.caffe配置文件 ...
- 旷视MegEngine数据加载与处理
旷视MegEngine数据加载与处理 在网络训练与测试中,数据的加载和预处理往往会耗费大量的精力. MegEngine 提供了一系列接口来规范化这些处理工作. 利用 Dataset 封装一个数据集 数 ...
- PointRCNN: 点云的3D目标生成与检测
PointRCNN: 点云的3D目标生成与检测 PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud 论文地址 ...
- NVIDIA FFmpeg 转码技术分析
NVIDIA FFmpeg 转码技术分析 所有从 Kepler 一代开始的 NVIDIA GPUs 都支持完全加速的硬件视频编码,而从费米一代开始的所有 GPUs 都支持完全加速的硬件视频解码.截至 ...
- Appium_adb常用命令总结
以下为在工作学习过程中总结的常用的adb命令,用来做后续参考和查阅: 一.常用命令 显示当前运行的全部模拟器: adb devices 安装应用程序: adb install 应用程序.apk 备注 ...
- 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)
背景 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...
- 如何利用Python计算景观指数AI
可使用工具包 pylandstats 此工具包基本是根据fragstats形成的,大部分fragstats里面的景观指数,这里都可以计算.但是,还是有一小部分指数这里没有涉及. LS_METRICS ...
- Unity使用Photon PUN2设置中国区服务器
原文地址:Unity使用Photon PUN2设置中国区服务器 入门系列 PUN2选择中国区服务器 先搜索中国区官网 选择试用购买 绑定你的Appid 注意: 当你的Appid申请了中国区后,海外的你 ...