UVA 1541 - To Bet or Not To Bet(概率递推)
UVA 1541 - To Bet or Not To Bet
题意:这题题意真是神了- -。看半天,大概是玩一个游戏,開始在位置0。终点在位置m + 1,每次扔一个硬币,正面走一步,反面走两步,走到的步上有4种情况:
1、向前走n步
2、向后走n步
3、停止一回合
4、无影响
问能在t次机会内,走到终点m + 1(假设跃过也算走到了)的概率。大于0.5。等于0.5,小于0.5相应不同输出
思路:题意懂了就好办了。事实上就是递推就能够了dp[i][j]表示第i次机会,落在j步的概率。然后不断一步步去递推就可以
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 55; int T, m, t, to[N];
double dp[N][N]; int tra() {
char str[10];
scanf("%s", str);
if (str[0] == '0') return 0;
if (str[0] == 'L') return INF;
else {
int num = 0, flag = (str[0] == '+' ? 1 : -1);
for (int i = 1; str[i]; i++)
num = num * 10 + str[i] - '0';
return num * flag;
}
} int main() {
scanf("%d", &T);
while (T--) {
scanf("%d%d", &m, &t);
for (int i = 1; i <= m; i++)
to[i] = tra();
to[m + 1] = 0;
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
for (int i = 0; i <= t; i++) {
for (int j = 0; j <= m; j++) {
if (to[min(m + 1, j + 1)] == INF)
dp[i + 2][min(m + 1, j + 1)] += dp[i][j] * 0.5;
else
dp[i + 1][min(max(0, j + 1 + to[min(m + 1, j + 1)]), m + 1)] += dp[i][j] * 0.5;
if (to[min(m + 1, j + 2)] == INF)
dp[i + 2][min(m + 1, j + 2)] += dp[i][j] * 0.5;
else
dp[i + 1][min(max(0, j + 2 + to[min(m + 1, j + 2)]), m + 1)] += dp[i][j] * 0.5;
}
}
double ans = 0;
for (int i = 0; i <= t; i++) ans += dp[i][m + 1];
if (ans > 0.5) printf("Bet for. ");
else if (ans < 0.5) printf("Bet against. ");
else printf("Push. ");
printf("%.4lf\n", ans);
}
return 0;
}
UVA 1541 - To Bet or Not To Bet(概率递推)的更多相关文章
- UVA 10288 - Coupons(概率递推)
UVA 10288 - Coupons option=com_onlinejudge&Itemid=8&page=show_problem&category=482&p ...
- UVA 11021 - Tribles(概率递推)
UVA 11021 - Tribles 题目链接 题意:k个毛球,每一个毛球死后会产生i个毛球的概率为pi.问m天后,全部毛球都死亡的概率 思路:f[i]为一个毛球第i天死亡的概率.那么 f(i)=p ...
- UVa 11021 (概率 递推) Tribles
Tribble是麻球? 因为事件都是互相独立的,所以只考虑一只麻球. 设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式: f(i) = P0 + P1 * f(i-1) + P2 ...
- UVa 557 (概率 递推) Burger
题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡 ...
- UVA 557 - Burger(概率 递推)
Burger When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was ...
- UVA 1642 Magical GCD(gcd的性质,递推)
分析:对于区间[i,j],枚举j. 固定j以后,剩下的要比较M_gcd(k,j) = gcd(ak,...,aj)*(j-k+1)的大小, i≤k≤j. 此时M_gcd(k,j)可以看成一个二元组(g ...
- UVA 12673 Erratic Expansion 奇怪的气球膨胀 (递推)
不难发现,每过一个小时,除了右下方的气球全都是蓝色以外,其他都和上一个小时的气球是一样的,所以是可以递推的.然后定义一类似个前缀和的东西f(k,i)表示k小时之后上面i行的红气球数.预处理出k小时的红 ...
- UVa 557 Burger (概率+递推)
题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先 ...
- UVa 11040 Add bricks in the wall (水题递推)
题意:给定一个金字塔,除了最后一行,每个数都等于支撑它的两个数的和,现在给奇数行的左数奇数位置,求整个金字塔. 析:很容易看出来,从下往上奇数行等于 a[i][j] = (a[i-2][j-1] - ...
随机推荐
- NSUserDefaults 简介
NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信 ...
- BZOJ2298 [HAOI2011]problem a 【dp】
题目 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个 ...
- Hadoop HDFS 中的一些常用命令
转载自:hadoop HDFS常用文件操作命令 命令基本格式: hadoop fs -cmd < args > 1.ls hadoop fs -ls / 列出hdfs文件系统根目录下的目录 ...
- C语言扩展题
1.使用cmake来创建c语言工程 2.使用gcc来编译源代码 3.下载redis,并且编译运行redis(注:redis目前是c语言编写的,而且是主要是linux平台,在windows平台编译比较麻 ...
- [leetcode] permutations 排列
写了两个,一个是直接的递归实现: class Solution { public: void swap(vector<int> &num,int left,int right) { ...
- hdu 5400(思路题)
Arithmetic Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- LeetCode OJ--Binary Tree Preorder Traversal
http://oj.leetcode.com/problems/binary-tree-preorder-traversal/ 二叉树的先跟遍历,写的是递归版本,也可以使用stack来进行,替代了递归 ...
- 神秘的FrontCache
用jmap -histo的时候,发现堆内存中有很多奇怪的对象,其class name为 java.util.HashMap$FrontCache 跳转到HashMap的源码中,直接搜索FrontCac ...
- IDEA连接linux服务器
idea连接linux(完成了xshell和xftp连接linux的功能,可以直接卸载这俩了..) File->settings->Deployment左侧加号添加 选择传输类型ftp或者 ...
- Skiing(最短路)
poj——3037 Skiing Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4921 Accepted: 1315 ...