DP深似海,得其得天下。——题记

叕叕叕叕叕叕叕叕叕叕叕(第∞次学DP内容)被D飞了,真的被DP(pa)了。这次D我的是大叫着第二题比较难(小象涂色傻b题)的Mocha(zzz)大佬,表示搞个概率DP,后面还有什么区间、状压、插头DP,不知道这个坑怎么填。唉,心疼。

讲讲这道题吧,在ZZZ大佬的帮助下终于看懂了题,然后他告诉我:

其实全部的箱子都是一样的

然后聪明(???)的我就发现,答案要求的其实就是每个箱子,颜色最后变成0~c-1的期望,再乘以颜色那个数字罢了。

So,弄一个f数组,f[i][j]表示染了i次色,变成j颜色的期望。

然后,上代码。很好理解,我写了注释。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int cs[];
double f[][];//f[i][j]表示染了i次色,变成j颜色的期望
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,c,K,mmax=,x,y;
scanf("%d%d%d",&n,&c,&K);
memset(cs,,sizeof(cs));
for(int i=;i<=K;i++)
{
scanf("%d%d",&x,&y);
for(int j=x;j<=y;j++)
{
cs[j]++;
mmax=max(mmax,cs[j]);
}
} memset(f,,sizeof(f));f[][]=1.0;//一开始全部都是1
for(int i=;i<=mmax;i++)
for(int j=;j<c;j++)
{
f[i][j]+=f[i-][j]/;//有1/2的概率,不会被涂色
for(int k=;k<c;k++)f[i][(j*k)%c]+=f[i-][j]/(*c);//枚举所有可能被涂的颜色
//被涂的概率是1/2,被涂k颜色概率为1/c,合起来就是1/(2*c)
} double ans=0.0;
for(int i=;i<=n;i++)//枚举每一个箱子
for(int j=;j<c;j++)//被涂成j颜色
ans+=f[cs[i]][j]*j;//i被涂有cs[i]次,由于要求颜色和,乘以颜色
printf("%.9lf\n",ans);
}
return ;
}

caioj1270: 概率期望值1:小象涂色的更多相关文章

  1. 【NOIP模拟题】小象涂色(概率+期望+递推)

    表示数学是个渣... 其实只需要推出每个箱子k次以后的颜色为i的概率就能算出期望了.. 对于区间[l, r]的箱子因为是任意颜色且任意取,所以概率分别为1/c和1/2,那么整体概率就为这两个的乘积.根 ...

  2. BZOJ2375: 疯狂的涂色

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2375 小t非常喜爱画画,但是他还是一个初学者.他最近费尽千辛万苦才拜到已仙逝的达 芬奇为师(神 ...

  3. bzoj 2375: 疯狂的涂色

    2375: 疯狂的涂色 Time Limit: 5 Sec  Memory Limit: 128 MB Description 小t非常喜爱画画,但是他还是一个初学者.他最近费尽千辛万苦才拜到已仙逝的 ...

  4. 涂色问题(Python)

    题目:将一个圆形等分成N个小扇形,将这些扇形标记为1,2,3,-,N.现在使用M种颜色对每个扇形进行涂色,每个扇形涂一种颜色,且相邻的扇形颜色不同,问有多少种不同的涂法?(N≥1,M≥3) 参考:ht ...

  5. 「CQOI2007」「BZOJ1260」涂色paint (区间dp

    1260: [CQOI2007]涂色paint Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 2057  Solved: 1267[Submit][St ...

  6. NOIp十连测 涂色游戏

    [问题描述]小A 和小B 在做游戏.他们找到了一个n 行m 列呈网格状的画板.小A 拿出了p 支不同颜色的画笔,开始在上面涂色.看到小A 涂好的画板,小B 觉得颜色太单调了,于是把画板擦干净,希望涂上 ...

  7. [CSP-S模拟测试]:涂色游戏(DP+组合数+矩阵快速幂)

    题目描述 小$A$和小$B$在做游戏.他们找到了一个$n$行$m$列呈网格状的画板.小$A$拿出了$p$支不同颜色的画笔,开始在上面涂色.看到小$A$涂好的画板,小$B$觉得颜色太单调了,于是把画板擦 ...

  8. 题解 P1283 【平板涂色】

    P1283 平板涂色 数据范围也太小了qwq..适合本萌新暴搜 小小的剪枝: 1.用pre预处理出每块矩形上方的矩形,pre[i][0]记录数目(如果数据范围再开大一点,直接1~n枚举判断可能超时qw ...

  9. 1260: [CQOI2007]涂色paint

    Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...

随机推荐

  1. Sed命令基础操作

    sed用法的小技巧 (1)在查找范围时不需要用到替换,所以不用s; (2)当只需要打印被修改行时,可以使用-n 和 –p 选项,注意二者一定配合使用: 3种方式指定命令行上的多重指令 (1)用逗号分隔 ...

  2. 【Codeforces 1006D】Two Strings Swaps

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 注意只能改变a不能改变b 然后只要让a[i],b[i],a[n-i-1],b[n-i-1]这4个字符能凑成两对.全都一样就可以了 分类讨论下就 ...

  3. python3--产生偏移和元素:enumerate

    之前,我们讨论过通过range来产生字符串中元素的偏移值.而不是那些偏移值处的元素.不过,在有些程序中.我们两者都需要,要用的元素以及值个元素的偏移值.从传统意义来讲,这是简单的for循环,他同时也持 ...

  4. Codeforces Round #296 (Div. 2) D. Clique Problem [ 贪心 ]

    传送门 D. Clique Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  5. Object-C Xcode 编译提示 note: please rebuild precompiled header ZWYLPrefixHeader

    错误提示如下图 解决思路: 由于手欠不小心,在.pch文件上的第一行加了几个文字,删除以后,还有一个空行,估计是这个空行引起的.删除这个空行,就好了.

  6. SQL SERVER 2012 第四章 连接 JOIN の INNER JOIN

    所有JOIN语句的共同点是:将一个记录与另外一个或多个记录匹配,从而生成一个新记录,这个记录是由两个记录的合并列所产生的一个超集. 内部连接: 内部连接语法结构:SELECT <select l ...

  7. topcoder 650 srm div2 1000pts

    (15) 也是 DIV1 500 题意是给定 一个无向图 删去一条边以后 可不可以是完全二叉树. 细节点很多,开始做法居然求到桥去了,最近强联通写傻了. 最多1024-1个点 1024-1条边枚举 所 ...

  8. Java中设置Session过期时间(Spring Boot)

    1.Spring Boot: server.session.cookie.comment = #注释会话cookie. server.session.cookie.domain = #会话cookie ...

  9. mysql登录退出命令

    1. MySQL登录与退出登录Mysql:“输入mysql -u帐号 -p密码 这是登陆mysql退出:mysql > exit;以下是实例参考下: 登录Mysql:“输入mysql -uroo ...

  10. ArcGIS Engine三维动画开发 来自:http://www.iarcgis.com/?p=826

    ArcGIS Engine 三维开发 来自:http://www.iarcgis.com/?p=826 在三维中,经常使用的一个功能就是播放动画,也就是我们要对一条动画轨迹进行播放,而在ArcGIS ...