UVA 1541 - To Bet or Not To Bet(概率递推)
来源:互联网 发布:苹果平板怎么下载软件 编辑:程序博客网 时间:2024/04/29 21:41
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;}
1 0
- UVA 1541 - To Bet or Not To Bet(概率递推)
- UVA - 1541 To Bet or Not To Bet (DP+概率)
- poj 1644 To Bet or Not To Bet(递推)
- uva 1541 - To Bet or Not To Bet(记忆化+概率)
- Poj 1644 To Bet or Not To Bet (概率 DP)
- POJ1644:To Bet or Not To Bet(概率DP)
- POJ-1644 To Bet or Not To Bet(概率DP)
- 1644 To Bet or Not To Bet 解题报告
- poj 1644 To Bet or Not To Bet
- poj 1644 To Bet or Not To Bet
- pku 1644 To Bet or Not To Bet(DP)
- 菜鸟学算法之POJ 1644 To Bet Or Not To Bet
- 10 Technologies To Bet On in the Recession
- Bet(思维
- HDU 5978 To begin or not to begin(概率)
- HDU5978 To begin or not to begin(概率+规律)
- HDU 5978 To begin or not to begin(概率)
- uva 10273 Eat or Not to Eat?
- 讲讲金融业务(二)--银行自助结算业务系统架构(A)
- http:\\dongxi.douban.com/article/1363048/
- 的说法的说法都是疙瘩是撒旦
- 深入浅出K-Means算法
- LeetCode OJ算法题(二十):Valid Parentheses
- UVA 1541 - To Bet or Not To Bet(概率递推)
- dongxi.douban.com/article/1363048/
- OpenCV——PS 图层混合算法 (三)
- MapReducer的Job调优
- 有很多好地方好得很大酒店酒店
- logger
- SQL Server数据库sa用户无法登陆解决方法
- Linux crontab 定时执行任务
- 全球最杰出的14位程序员