题意:会出石头、剪刀、布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人是三种类型的概率

设状态dp(i,j,k)为还有i个石头,j个剪刀,k个布时的概率,dp(r,s,p)=1.0

状态转移方程:

d(i-1,j,k)+=d(i,j,k)*(i*k)/(i*j+i*k+j*k);

d(i,j-1,k)+=d(i,j,k)*(i*j)/(i*j+i*k+j*k);

d(i,j,k-1)+=d(i,j,k)*(j*k)/(i*j+i*k+j*k);

因为状态dp(i,j,k)可以由dp(i+1,j,k)、dp(i,j+1,k)和dp(i,j,k+1)转移过来,所以用+=

一个三重循环解决,复杂度O(n^3)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<stack>
#include<queue>
#include<deque>
#include<set>
#include<vector>
#include<map>
#include<functional>#define fst first
#define sc second
#define pb push_back
#define mp(a,b) make_pair(a,b)
#define mem(a,b) memset(a,b,sizeof(a))
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lc root<<1
#define rc root<<1|1
#define lowbit(x) ((x)&(-x)) using namespace std;typedef double db;
typedef long double ldb;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PI;
typedef pair<ll,ll> PLL;const int maxn = 5e5 + 100;
const int maxm = 5e5 + 100;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const double eps = 1e-6;
inline int read(){int num;char ch;while((ch=getchar())<'0' || ch>'9');num=ch-'0';while((ch=getchar())>='0' && ch<='9'){num=num*10+ch-'0';}return num;
}
double dp[101][101][101];
int main(){int r, s ,p;scanf("%d %d %d", &r, &s, &p);mem(dp, 0);dp[r][s][p] = 1;for(int i = r; i >= 1; i--){for(int j = s; j >= 1; j--){for(int k = p; k >= 1; k--){double sum = i*j + j*k + i*k;printf("%d %d %d %lf\n", i, j, k, dp[i][j][k]);dp[i-1][j][k] = dp[i][j][k]*(double)(i*k)/sum;dp[i][j-1][k] = dp[i][j][k]*(double)(i*j)/sum;dp[i][j][k-1] = dp[i][j][k]*(double)(j*k)/sum;}}}double ans1, ans2, ans3;ans1 = ans2 = ans3 = 0;for(int i = 1; i <= 100; i++){for(int j = 1; j <= 100; j++){ans1 += dp[i][j][0];ans2 += dp[0][i][j];ans3 += dp[j][0][i];}}printf("%.17lf %.17lf %.17lf", ans1, ans2, ans3);return 0;
}
/**/

View Code

转载于:https://www.cnblogs.com/wrjlinkkkkkk/p/9426225.html

codeforces 540D Bad Luck Island (概率DP)相关推荐

  1. CodeForces - 540D Bad Luck Island —— 求概率

    题目链接:https://vjudge.net/contest/226823#problem/D The Bad Luck Island is inhabited by three kinds of ...

  2. Codeforces 148D. Bag of mice(概率dp)

    Codeforces 148D. Bag of mice(概率dp) Description The dragon and the princess are arguing about what to ...

  3. 【ZOJ - 2949】Coins of Luck (概率dp,期望)

    题干: 给你两种泡面 各N包,然后你扔硬币,正面朝上吃第一种,反面呢 吃第二种,有任意一种吃完时 就不需要抛硬币了,求停止抛硬币的期望. Sample Input 2 1 2 Sample Outpu ...

  4. CodeForces 351B Jeff and Furik 概率DP 逆序对

    题目大意: 就是现在给出一个1~n的排列, Jeff和Furik分别轮流进行操作, Jeff先手, Jeff会选择相邻的两个数p[i], p[i + 1]交换位置, 然后轮到Furik, Furiki ...

  5. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  6. Codeforces 678E. Another Sith Tournament(概率DP,状压)

    Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指 ...

  7. 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)

    题干: Ilya got tired of sports programming, left university and got a job in the subway. He was given ...

  8. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  9. 插头DP 概率DP / 期望DP

    插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...

最新文章

  1. 激光光凝后容易出现频繁闪光的原因
  2. 阿里大牛精心整理了46张PPT,教你弄懂JVM、GC算法和性能调优!
  3. Leetcode每日一题:9.palindrome-number(回文数)
  4. Vue 3 不再支持 IE 11!
  5. 超市里的15个“心理陷阱” 不知不觉中就掏了钱包 防不胜防
  6. mac安装mysql devel_Mac安装Mysql
  7. 21天学通java不好_21天学通Java_怎么样学好Java,学Java-IT培训网
  8. 在chinapub买的书还没有到?
  9. html文章整体居中,html如何实现文本上下居中
  10. 外卖行业现状分析_2020年中国外卖行业市场现状与发展前景分析
  11. 【今日CV 计算机视觉论文速览 第95期】Fri, 5 Apr 2019
  12. 纯前端实现—点一个小圆圈变四个动画效果
  13. 新东方报名系统服务器地址,新东方邮箱服务器地址
  14. 在Markdown中打出上下标
  15. vue-print-nb 实现页面打印(含分页打印)
  16. python学习之文章中单词出现频率统计
  17. 服务器心跳信号,服务器心跳线设置
  18. android逆向开发工程师需要掌握的技能--实习一个月总结报告
  19. C++ 之学习大纲网址:文档:C++ knowledge.note 链接:http://note.youdao.com/noteshare?id=c786848810ceb817ae61b76c6bf
  20. 化妆品电商平台数据分析报告

热门文章

  1. lavarel php区别,laravel中{{}}和{!! !!}的区别详解
  2. java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
  3. 使用vim的重不重要_VIM高级操作,经常用vim的应该多学习。多开发效率很有大帮助!...
  4. MySQL 基础 ———— 流程控制结构
  5. java tostring的用处_JAVA的tostring()方法的作用是什么呢?
  6. matlab二元方程组,用matlab解一个二元方程组,会的进,得到解再回答
  7. qt添加菜单纯代码_Qt Creator 插件开发(3):添加菜单项
  8. cv图像翻转_涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南
  9. 如何让小程序页面更顺滑_小程序怎样让wx.navigateBack更好用的方法实现
  10. 基于JAVA springboot+mybatis智慧生活分享平台设计和实现