LightOJ 1050 - Marbles (概率dp)

原创 2015年11月20日 16:45:49

题意:

r<=500,b<=500,,b
,b,

分析:

dp[r][b]:=,rb,,

代码:

//
//  Created by TaoSama on 2015-11-20
//  Copyright (c) 2015 TaoSama. All rights reserved.
//
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <string>
#include <set>
#include <vector>

using namespace std;
#define pr(x) cout << #x << " = " << x << "  "
#define prln(x) cout << #x << " = " << x << endl
const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;

int r, b;
double dp[505][505];

double dfs(int r, int b) {
    double &ret = dp[r][b];
    if(ret >= 0) return ret;
    if(r == 0) return ret = 1;
    if(b == 0) return ret = 0;
    int sum = r + b;
    ret = 1.0 * r / sum * dfs(r - 1, b - 1); //I take red
    if(b > 1) ret += 1.0 * b / sum * dfs(r, b - 2); //I take blue
    return ret;
}

int main() {
#ifdef LOCAL
    freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);
//  freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);
#endif
    ios_base::sync_with_stdio(0);

    int t; scanf("%d", &t);
    int kase = 0;
    fill(dp[0], dp[0] + 505 * 505, -1.0);
    while(t--) {
        scanf("%d%d", &r, &b);
        printf("Case %d: %.10f\n", ++kase, dfs(r, b));
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LightOJ 1050 - Marbles(概率DP)

题意:红蓝两种球。你每次可随机拿一个,Jim每次只能拿蓝球。若Jim无球可拿,则他赢。若最后一个被拿的是蓝球,不管谁拿的都是你赢。否则Jim赢。求你赢的概率。 思路:dp[i][j]表示i个红球j个蓝...

lightoj 1030 概率dp

1030 - Discovering Gold   PDF (English) Statistics Forum Ti...

LightOJ1030---Discovering Gold(概率dp)

You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the cave c...

LightOJ 1038 Race to 1 again 期望+概率dp

/* 题目描述:给定正整数n,每次任意选择n的一个因子并除掉,问平均一共要除多少次能把n变成1 思路:设dp[x]表示把x变为1的期望,f[x]表示x的因子个数,根据全期望公...
  • jijijix
  • jijijix
  • 2016年08月27日 10:15
  • 105

[概率DP] LightOJ 1151 - Snakes and Ladders

1151 - Snakes and Ladders 题意: 有100个格子,从1开始走,每次随机走1~6。有n个格子会单向传送到其他格子,tp[i]表示从i传送到tp[i]。 1和100不会有传...
  • kg20006
  • kg20006
  • 2016年04月05日 16:07
  • 682

LIghtOJ1038---Race to 1 Again(概率dp)

Rimi learned a new thing about integers, which is - any positive integer greater than 1 can be divid...

LightOJ 1064 Throwing Dice 概率DP

题目大意: 就是问投骰子n次, 得到的点数和不小于x的概率 骰子6个面点数分别为1,2,3,4,5,6,出现几率一样 大致思路: 就是一个简单的计数问题, 转台转移方程见代码注释 由于...

【概率DP】 LightOJ 1342 Aladdin and the Magical Sticks

Vjudge地址:http://acm.hust.edu.cn/vjudge/problem/27050 原题地址: http://lightoj.com/login_main.php?ur...

1030 - Discovering Gold (lightoj 1030 概率DP)

1030 - Discovering Gold PDF (English) Statistics Forum Time L...

LightOJ_1265:Island_of_Survival(概率DP/想法题)

题目大意是岛上有一个人,t只老虎和d只鹿,每天都会有两个生物随机碰面,有以下几种情况①老虎与人碰面,人被吃掉②老虎与鹿碰面,鹿被吃掉③老虎与老虎,两只老虎同归于尽④鹿与鹿碰面,什么都不会发生⑤鹿与人碰...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LightOJ 1050 - Marbles (概率dp)
举报原因:
原因补充:

(最多只允许输入30个字)