codeforces 540D Bad Luck Island (概率DP)
题意:会出石头、剪刀、布的人分别有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)相关推荐
- CodeForces - 540D Bad Luck Island —— 求概率
题目链接:https://vjudge.net/contest/226823#problem/D The Bad Luck Island is inhabited by three kinds of ...
- Codeforces 148D. Bag of mice(概率dp)
Codeforces 148D. Bag of mice(概率dp) Description The dragon and the princess are arguing about what to ...
- 【ZOJ - 2949】Coins of Luck (概率dp,期望)
题干: 给你两种泡面 各N包,然后你扔硬币,正面朝上吃第一种,反面呢 吃第二种,有任意一种吃完时 就不需要抛硬币了,求停止抛硬币的期望. Sample Input 2 1 2 Sample Outpu ...
- CodeForces 351B Jeff and Furik 概率DP 逆序对
题目大意: 就是现在给出一个1~n的排列, Jeff和Furik分别轮流进行操作, Jeff先手, Jeff会选择相邻的两个数p[i], p[i + 1]交换位置, 然后轮到Furik, Furiki ...
- 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...
- Codeforces 678E. Another Sith Tournament(概率DP,状压)
Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指 ...
- 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)
题干: Ilya got tired of sports programming, left university and got a job in the subway. He was given ...
- 【原创】概率DP总结 by kuangbin
概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...
- 插头DP 概率DP / 期望DP
插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...
最新文章
- 激光光凝后容易出现频繁闪光的原因
- 阿里大牛精心整理了46张PPT,教你弄懂JVM、GC算法和性能调优!
- Leetcode每日一题:9.palindrome-number(回文数)
- Vue 3 不再支持 IE 11!
- 超市里的15个“心理陷阱” 不知不觉中就掏了钱包 防不胜防
- mac安装mysql devel_Mac安装Mysql
- 21天学通java不好_21天学通Java_怎么样学好Java,学Java-IT培训网
- 在chinapub买的书还没有到?
- html文章整体居中,html如何实现文本上下居中
- 外卖行业现状分析_2020年中国外卖行业市场现状与发展前景分析
- 【今日CV 计算机视觉论文速览 第95期】Fri, 5 Apr 2019
- 纯前端实现—点一个小圆圈变四个动画效果
- 新东方报名系统服务器地址,新东方邮箱服务器地址
- 在Markdown中打出上下标
- vue-print-nb 实现页面打印(含分页打印)
- python学习之文章中单词出现频率统计
- 服务器心跳信号,服务器心跳线设置
- android逆向开发工程师需要掌握的技能--实习一个月总结报告
- C++ 之学习大纲网址:文档:C++ knowledge.note 链接:http://note.youdao.com/noteshare?id=c786848810ceb817ae61b76c6bf
- 化妆品电商平台数据分析报告
热门文章
- lavarel php区别,laravel中{{}}和{!! !!}的区别详解
- java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
- 使用vim的重不重要_VIM高级操作,经常用vim的应该多学习。多开发效率很有大帮助!...
- MySQL 基础 ———— 流程控制结构
- java tostring的用处_JAVA的tostring()方法的作用是什么呢?
- matlab二元方程组,用matlab解一个二元方程组,会的进,得到解再回答
- qt添加菜单纯代码_Qt Creator 插件开发(3):添加菜单项
- cv图像翻转_涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南
- 如何让小程序页面更顺滑_小程序怎样让wx.navigateBack更好用的方法实现
- 基于JAVA springboot+mybatis智慧生活分享平台设计和实现