【BZOJ2554】Color

Description

有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一样?

Input

一行一个字符串,表示球的颜色

Output

一行表示结果,精确到小数点后1位。

Sample Input

AAA

Sample Output

0.0

HINT

数据范围
   对于10%的数据,n<=20
   对于40%的数据,n<=200
   对于50%的数据,n<=1000
   对于100% 的数据,n <= 10000

题解:Orz达哥的题解

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=10010;
int n;
int cnt[30];
char str[maxn];
double f[maxn],k[maxn],b[maxn];
double ans;
int main()
{
scanf("%s",str),n=strlen(str);
int i;
k[1]=1;
for(i=1;i<n;i++)
{
k[i+1]=(k[i]-(i-1)/2.0/i*k[i-1])*2.0*i/(i+1);
b[i+1]=(b[i]-(i-1)/2.0/i*b[i-1]-n*(n-1)/2.0/i/(n-i))*2.0*i/(i+1);
}
f[1]=-b[n]/k[n];
for(i=1;i<n;i++) f[i]=k[i]*f[1]+b[i];
for(i=0;i<n;i++) cnt[str[i]-'A']++;
for(i=0;i<26;i++) ans+=f[cnt[i]]*cnt[i]/n;
printf("%.1lf",ans);
return 0;
}

【BZOJ2554】Color 概率神题的更多相关文章

  1. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  2. POJ 2484 A Funny Game(神题!)

    一开始看这道博弈题的时候我就用很常规的思路去分析了,首先先手取1或者2个coin后都会使剩下的coin变成线性排列的长条,然后无论双方如何操作都是把该线条分解为若干个子线条而已,即分解为若干个子游戏而 ...

  3. BUAA 724 晴天小猪的神题(RMQ线段树)

    BUAA 724 晴天小猪的神题 题意:中文题,略 题目链接:http://acm.buaa.edu.cn/problem/724/ 思路:对于询问x,y是否在同一区间,可以转换成有没有存在一个区间它 ...

  4. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 128[Submit][Status ...

  5. [agc007f] Shik and Copying String 模拟神题

    Description ​ "全"在十分愉快打工,第0天,给了他一个仅有小写字母构成的长度为N的字符串S0,在之后的第i天里,"全"的工作是将Si−1复制一份到 ...

  6. AtCoder 神题汇总

    记录平时打 AtCoder 比赛时遇到的一些神题. Tenka1 Programmer Contest 2019 D Three Colors 题目大意 有 $n$ 个正整数 $a_1, a_2,\d ...

  7. hdoj5821【贪心-神题】

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,比赛的时候直接读错题了,实力带坑队友.... 题意: 有两个序列都代表筐,每个筐里只有一个球,然后序列的值代表筐里的球的颜色,问你在m次操作后,a序列的球能否变成b ...

  8. [Bzoj4817] [Sdoi2017]树点涂色 (LCT神题)

    4817: [Sdoi2017]树点涂色 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 629  Solved: 371[Submit][Status ...

  9. BZOJ2554 color 【概率DP】【期望DP】

    题目分析: 好题. 一开始看错题了,以为是随机选两个球,编号在前的染编号在后的. 但这样仍然能获得一些启发,不难想到可以确定一个颜色,剩下的颜色是什么就无关了. 那么答案就是每种颜色的概率乘以期望.概 ...

随机推荐

  1. DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定

    通过DataGridView.CellParsing事件可以设定用户输入的值.下面的示例:当输入英文文本内容的时候,立即被改变为大写.DataGridView.CellParsing在离开编辑的单元格 ...

  2. form_tag

    class SwitchesController < ApplicationController #before_filter :authenticate_user!, :except => ...

  3. tp-03 模板显示

    方式模板:$this->display(); 每当建立一个控制器  都要在view建立一个名字相对应的文件夹   在建立相对于的页面.

  4. 用实现ajax读博客rss示例代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  5. [oracle] 两种权限:系统权限VS对象权限

    系统权限表示对表和表空间等   有无操作权  的权限.一般是SYS用户这种DBA来授权.比如: grant create session to lisi grant create table to l ...

  6. 关于Cocos2d-x对象的定义和创建

    游戏可以包含很多个场景,每个场景又包含很多的层,每个层又包含很多的节点,这些节点,层,场景都可以看成一个一个的对象,我们把每一个彼此不同但又是同类型的对象归为一个类,为它创建一个单独的类,这个类有这些 ...

  7. Intellij Idea14 jstl标签的引入

    习惯了eclipse和myeclipse开发的我们总是依赖于系统的插件,而当我想当然的以为IntelliJ IDEA 的jstl 的使用应该和myeclispe一样,当时使用起来却到处碰壁,完全找不到 ...

  8. 第三百零三节,Django框架介绍——用pycharm创建Django项目

    Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...

  9. jquery获取当前select下拉选的属性值

    body中: <li> <select id="select_phone"></select> <input type="but ...

  10. python改动文件内容,不须要read,write多个动作。

    python  要改动文件内容,经常使用 是先read.后write , 再 rename.非常不爽. 比方:须要 把       yuv_dir ="../HD/"   # &q ...