题目本身不难。类似于dp。f(i)表示手中现有i颗糖果赢的概率,则下一局赢的概率是p(1-q),下一局输的概率是q(1-p),下一句平手的概率是1-p(1-q)-q(1-p),平手包括两人均答对或答错。那么可推导状态转移方程:
f(i) = p(1-q)f(i-1) + q(1-p)f(i+1) + [ 1-p(1-q)-q(1-p) ]f(i)
归并相同项可以得到等比数列,p(1-q)(f(i) - f(i-1)) = q(1-p)(f(i+1) - f(i))。设定比例系数,并利用等比数列求和公式可求。其中需要注意的是,f(0)=0,f(n+m)=1,因为手中若已经有n+m颗糖果,则已经获得全部胜利。我们需要求的是f(n)的概率是多少。除了考虑n或m为0的情况,还有p或q为1/0的情况,还必须考虑等比系数为1的情况,当等比系数为1无法用等比求和公式时,则证明二者答对的概率相等,此时应当考虑两者的糖果数目(概率论等概率)。等比为1,很容易想不到,wa了很多次。

 #include <stdio.h>
#include <math.h> int main() {
int m, n;
double p, q, winp, tmp; while (scanf("%d%d%lf%lf", &n, &m, &p, &q) != EOF) {
if (n == )
printf("0.00\n");
else if (m == )
printf("1.00\n");
else if (p== || q==)
printf("0.00\n");
else if (p== || q==)
printf("1.00\n");
else if (p == q) { // k==0
winp = 1.0*n/(m+n);
printf("%.2lf\n", winp);
} else {
tmp = q*(1.0-p) / (p*(1.0-q));
winp = (1.0-pow(tmp, n)) / (1.0-pow(tmp,n+m));
printf("%.2lf\n", winp);
}
} return ;
}

【HDOJ】1204 糖果大战的更多相关文章

  1. 糖果大战 hdu1204

    糖果大战 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. hdu_1024_糖果大战_201404021640

    糖果大战 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. HDU-1204-糖果大战

    题目描述 生日\(Party\)结束的那天晚上,剩下了一些糖果,\(Gandon\)想把所有的都统统拿走,\(Speakless\)于是说:"可以是可以,不过我们来玩\(24\)点,你不是已 ...

  4. Num 34 : HDOJ : 1205 吃糖果 [ 狄利克雷抽屉原理 ]

           抽屉原理:          桌上有十个苹果,要把这十个苹果放到九个抽屉里,不管如何放,我们会发现至少会有一个抽屉里面至少放两个苹果.          这一现象就是我们所说的" ...

  5. acdream 1682 吃不完的糖果(环形最大子段和)

    Problem Description 娜娜好不容易才在你的帮助下"跳"过了这个湖,果然车到山前必有路,大战之后必有回复,大难不死,必有后福!现在在娜娜面前的就是好多好多的糖果还有 ...

  6. C - 娜娜梦游仙境系列——吃不完的糖果

    C - 娜娜梦游仙境系列——吃不完的糖果 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Oth ...

  7. 【HDOJ 5654】 xiaoxin and his watermelon candy(离线+树状数组)

    pid=5654">[HDOJ 5654] xiaoxin and his watermelon candy(离线+树状数组) xiaoxin and his watermelon c ...

  8. 原生js可爱糖果数字时间特效

    效果展示:http://hovertree.com/texiao/js/35/ 数字采用漂亮的糖果皮肤设计 效果图: 代码如下: <!DOCTYPE html> <html> ...

  9. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

随机推荐

  1. SAX方式解析XML文件实例

    books.XML文件: 书籍book.java实体类: public class Book { private String id; private String name; private Str ...

  2. css 控制滚动样式

    ::-webkit-scrollbar{width: 8px; height: 8px;}::-webkit-scrollbar-button:vertical{display:none;}::-we ...

  3. MVC异步 导入excel文件

    View页面 js文件.封装到一个js文件里面 (function ($) { //可以忽略 var defaultSettings = { url: "http://upload.zhtx ...

  4. MSBuild could not create or connect to a task host with runtime "CLR2" and architecture "x86".

    vs2010 and vs2012 are installed on target machine. Build c# project using vs2010, following error oc ...

  5. Apache服务

    Apache服务的安装: Apache服务程序的软件包名称是:httpd 安装方法: rpm软件包安装.源码编译安装.yum安装 yum install httpd 安装完成后启动: revice h ...

  6. ASP.NET MVC Web API使用示例

    上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的rest api,由于篇幅原因,没有在上篇博客中进行讲解,这里专门拿出来进行讨论.还是一样引用上次的案例,用asp.net mvc提 ...

  7. java StringBuffer与StringBuilder

    StringBuffer:就是字符串缓冲区.         * 用于存储数据的容器.         * 特点:         * 1,长度的可变的.          * 2,可以存储不同类型数 ...

  8. 我对TCP CDG拥塞控制算法的改进和优化

    其实这不是我的优化,我是借用了BBR之力.         借了什么力呢?这是我一再强调的,BBR最大的共享不是为Linux贡献了一个TCP拥塞控制算法(它同时在也BSD上被实现...),而是它重构了 ...

  9. MongoDB入门三步曲2--基本操作(续)--聚合、索引、游标及mapReduce

    mongodb 基本操作(续)--聚合.索引.游标及mapReduce 目录 聚合操作 MapReduce 游标 索引 聚合操作 像大多关系数据库一样,Mongodb也提供了聚合操作,这里仅列取常见到 ...

  10. 企业生产环境下不同业务的linux分区建议

    常规分区方案: /boot:  100M swap:内存的1至1.5倍 / : 剩余硬盘大小 DB及存储:有大量重要的数据 /boot : 100M swap: 内存的1至1.5倍,如果内存大于等于1 ...