[期望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 ...
随机推荐
- [算法] 数据结构 splay(伸展树)解析
前言 splay学了已经很久了,只不过一直没有总结,鸽了好久来写一篇总结. 先介绍 splay:亦称伸展树,为二叉搜索树的一种,部分操作能在 \(O( \log n)\) 内完成,如插入.查找.删除. ...
- 西门子S7系列以太网通讯处理器功能介绍
北京华科远创科技有限研发的远创智控型号ETH-YC模块适用于西门子S7-200/S7-300/S7-400.SMART S7-200.西门子数控840D.840DSL.合信.亿维PLC的PPI/MPI ...
- Archlinux zsh终端美化 powerlevel10k配置
环境 Arch Linux + KDE Plasma 安装zsh yay -S zsh 更改默认终端 chsh -s /bin/zsh 安装oh-my-zsh-git archlinuxcn源有打好的 ...
- Pandas之:Pandas简洁教程
Pandas之:Pandas简洁教程 目录 简介 对象创建 查看数据 选择数据 loc和iloc 布尔索引 处理缺失数据 合并 分组 简介 pandas是建立在Python编程语言之上的一种快速,强大 ...
- GO语言练习---对切片进行排序
对整型切片进行选择排序 package main import "fmt" /*对切片排序*/ func SortSlice(slice []int) { for i := 0; ...
- Activiti Exploer工作流控制台使用指南!使用Activiti Explorer定义部署执行工作流
Activiti Explorer简介 Activiti Explorer: Activiti控制台,是一个web应用程序 从Activiti的官方网站下载Activiti的压缩zip文件时,Acti ...
- 九、Nginx常见问题处理
优化Nginx并发量 优化软件进程数.优化软件最大并发连接数限制.优化内核连接数限制open files(临时和永久同时设置) [root@proxy ~]# ab -n 2000 -c 2000 ...
- itools安装程序无法创建临时文件夹
做个记录: itools链接ios设备后,安装程序包时提示:无法创建临时文件夹 主要原因可能有以下几点 1.手机储存空间不足. 2.驱动组建被删除了,重启管理软件会自动跟新驱动. 解决办法:1.清除空 ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- 聊聊IOC中依赖注入那些事 (Dependency inject)
What is Dependency injection 依赖注入定义为组件之间依赖关系由容器在运行期决定,形象的说即由容器动态的将某个依赖关系注入到组件之中在面向对象编程中,我们经常处理的问题就是解 ...