bzoj2554: Color
Description
有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一样?
Solution
挺不错的题!
其实n可以开到1e7
思想:
1.26个太多,2个好做。
2.转化成2个?钦定哪一个最后成为最终颜色!这个是白色,剩下都是黑色。
发现问题:
问题1:不一定什么时候都能染成
概率:i/n
问题2:不能之前的f[i]剩下i个白球到全部是同样的颜色。必须都是白色并且都是黑色也不一定都是同样颜色的。
所以f[i]有i个白球,染成都是白色的期望步数
问题3:f[0]怎么定义?正无穷?
其实是条件概率,也就是,对于所有情况(S种),我们把所有最终变成char这种字母的情况拿出来(K种),统计每一个方案的步数,乘上概率(1/K)
再乘上:K/S,这里就是cnt[char]/n
所以其实,f[i]有一个条件,只统计能到达想要的全白状态下的期望步数
所以转移只用考虑“占比”(也就是占x/K),显然(i+1)的概率高,(i-1)的概率低,所以占比就是i+1:i-1
其实本质是条件概率再套条件概率
然后转移方程就列出来了,变成kx+b的形式
至于每次的恒定的g[i],就理解为动一下。动到哪里不关心
#include<bits/stdc++.h>
#define il inline
#define reg register int
#define numb (ch^'0')
using namespace std;
typedef long long ll;
il void rd(int &x){
char ch;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
namespace Miracle{
const int N=+;
double g[N],f[N],k[N],b[N];
int cnt[];
int n;
char s[N];
int main(){
scanf("%s",s+);
n=strlen(s+);
for(reg i=;i<=n;++i) ++cnt[s[i]-'A'];
for(reg i=;i<=n;++i) g[i]=(double)n*(n-)/(i*(n-i))/2.0;
for(reg i=n-;i>=;--i){
k[i]=(i-)/(*i-(i+)*k[i+]);
b[i]=((i+)*b[i+]+(*i*g[i]))/(*i-(i+)*k[i+]);
}
f[]=b[];
// cout<<f[1]<<endl;
for(reg i=;i<=n;++i){
f[i]=k[i]*f[i-]+b[i];
// cout<<f[i]<<endl;
}
double ans=;
for(reg i=;i<;++i){
ans+=(double)cnt[i]/n*f[cnt[i]];
//cout<<cnt[i]<<" "<<f[cnt[i]]<<" "<<ans<<endl;
}
printf("%.1lf",ans);
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
Date: 2019/3/11 22:53:25
*/
算是条件概率的基础应用吧
在条件概率下,只要扣一个条件的概率的帽子,剩下的就是全局的了。
这样我们钦定哪一个成为最终颜色,计算就不重不漏了。
bzoj2554: Color的更多相关文章
- BZOJ2554 color 【概率DP】【期望DP】
题目分析: 好题. 一开始看错题了,以为是随机选两个球,编号在前的染编号在后的. 但这样仍然能获得一些启发,不难想到可以确定一个颜色,剩下的颜色是什么就无关了. 那么答案就是每种颜色的概率乘以期望.概 ...
- 题解-bzoj2554 Color
Problem Please contact lydsy2012@163.com! 题意概要:有 \(n\) 个球排成一列,每个球都有一个颜色,每次随机选出两个球,使得后者染上前者的颜色,求期望操作多 ...
- 【BZOJ2554】Color 概率神题
[BZOJ2554]Color Description 有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作 ...
- 【转】c#、wpf 字符串,color,brush之间的转换
转自:http://www.cnblogs.com/wj-love/archive/2012/09/14/2685281.html 1,将#3C3C3C 赋给background this.selec ...
- Python为8bit深度图像应用color map
图片中存在着色版的概念,二维矩阵的每个元素的值指定了一种颜色,因此可以显示出彩色. 迁移调色板 下述python代码将VOC数据集中的某个语义分割的图片的调色板直接应用在一个二维矩阵代表的图像上 #l ...
- (转)System.Drawing.Color的颜色对照表
经常使用System.Drawing.Color, 本篇介绍一下颜色与名称及RGB值的对应关系. 1. 颜色与名称的对照表(点击下图放大看): 2. 颜色与RGB值对照表: Color.AliceBl ...
- 激光打印机的Color/paper, Xerography介绍
Color Basic 看见色彩三要素: 光源,物体,视觉 加色色彩模型:R,G,B 多用于显示器 减色色彩模型:C,M,Y,K 多用于打印复印 Paper 东亚地区常用A系列标准用纸,在多功能一体机 ...
- 安卓工具箱:color of Style
<?xml version="1.0" encoding="utf-8"?> <resources> <color name=&q ...
- UITableView 一直显示滚动条(ScrollBar Indicators)、滚动条Width(宽度)、滚动条Color(颜色)
在 IOS 中,对 UIScrollView 的滚动条(ScrollBar Indicators)的自定义设置接口,一直都是很少的.除了能自定义简单的样式(UIScrollViewIndicatorS ...
随机推荐
- mybatis源码分析(四)---------------代理对象的生成
在mybatis两种开发方式这边文章中,我们提到了Mapper动态代理开发这种方式,现在抛出一个问题:通过sqlSession.getMapper(XXXMapper.class)来获取代理对象的过程 ...
- spring初始化bean时执行某些方法完成特定的初始化操作
在项目中经常会在容器启动时,完成特定的初始化操作,如资源文件的加载等. 一 实现的方式有三种: 1.使用@PostConstruct注解,该注解作用于void方法上 2.在配置文件中配置init-me ...
- C# Note5:使用相对路径读取文件
一.C#中使用相对路径读取配置文件 一般Solution的目录结构如下图所示: (如过看不到某些文件,可以点击 “显示所有文件” 图标) 方法一:由于生成的exe文件在bin\debug目录下,可以使 ...
- 剑指offer(4)
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2 ...
- 你不知道的JavaScript——第二章:this全面解析
1调用位置 调用栈:为了到达当前执行位置所调用的所有函数. function baz(){ //当前调用栈:baz //因此,当前调用位置是全局作用域 console.log('baz'); bar( ...
- 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
1. MySQL 莫名变成了 Strict SQL Mode 最近测试组那边反应数据库部分写入失败,app层提示是插入成功,但表里面里面没有产生数据,而两个写入操作的另外一个表有数据.因为 inser ...
- Linux基础学习(11)--Shell编程
第十一章——Shell编程 一.基础正则表达式 1.正则表达式与通配符(*,?,[ ]): 2.基础正则表达式: 二.字符截取命令 1.cut字段提取命令: 空格分割时,不知道空格有多少个,无法分割行 ...
- windows 10 & 禁用服务.bat
windows 10 & 禁用服务.bat 禁用服务.bat @echo off net stop WSearch net stop wuauserv net start TrustedIns ...
- DBC格式解析(数据部分)
dbc格式说明:DBC Format 实战: 我们先来看一段数据 BO_ VOLTAGE01: BMS2 SG_ V01 : |@+ () [|] "" Vector__XXX ...
- Spring Boot 构建电商基础秒杀项目 (十一) 秒杀
SpringBoot构建电商基础秒杀项目 学习笔记 新建表 create table if not exists promo ( id int not null auto_increment, pro ...