Codeforces #28 C.Bath Queue (概率dp)】的更多相关文章

Codeforces Beta Round #28 (Codeforces format) 题目链接: http://codeforces.com/contest/28/problem/C 题意: 有 \(n\) 个人,\(m\) 间浴室,每间浴室有\(a[ i ]\)个浴缸,每个人要洗澡的话都要排队,假如一群人进入同一个浴室,他们总倾向于使得最长的队伍最短,现在问你所有队伍中最长的期望? 中文题解: 用状态 \(dp[i][j][k]\) 表示还剩 \(i\) 间浴室,还剩 \(j\) 个人,…
貌似竟然是我的第一道概率DP.. 手机码代码真不舒服.... /************************************************ Memory: 67248 KB Time: 31 MS Language: GNU G++ 4.9.2 Result: Accepted ************************************************/ /** 一个岛上住着一些石头,剪刀,布,他们互相之间两两随机碰面,如果不是一个种族,一个会杀死另一…
题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完之后会随机跳出来一个.取到每个小鼠的概率是一样的,跳出的也是一样的.先取到白色的小鼠赢,问最后princess能赢的概率. 思路:概率dp,如果把princess能赢的分成两种情况,那么这个题就是递推了,我是用记忆化搜索写的.首先,用dp[i][j]表示袋子当中还有i个白色的,j个黑色的prince…
D. Broken robot time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You received as a gift a very clever robot walking on a rectangular board. Unfortunately, you understood that it is broken a…
我概率期望真是垃圾--,这题搞了两个钟头-- 题意 有\(n\)个人,\(m\)个浴室,每个浴室里有\(a_i\)个浴缸.每个人会等概率随机选择一个浴室,然后每个浴室中尽量平分到每个浴缸.问期望最长排队队伍长度是多少? 解题思路 我看网上的题解都是直接\(DP\)期望,然而本蒟蒻看不懂那个递推式是什么鬼--有没有\(dalao\)来解释一下啊-- 付一下别人的题解,摘自https://www.cnblogs.com/LzyRapx/p/7692702.html 用状态$ dp[i][j][k]…
题意: 袋子里有w个白球b个黑球,现在两个人轮流每次取一个球(不放回),先取到白球的获胜,当后手取走一个球时,袋子里的球会随机的漏掉一个,问先手获胜的概率. 分析: dp[i][j]表示袋子中i个白球j个黑球,先手取获胜的概率. 有四种情况 先手取到白球,获胜概率1.0*i/(i+j); 后手取到白球,先手输 前两次都取到黑球,漏掉一个黑球,转移到dp[i][j-3] 前两次都取到黑球,漏掉一个白球,转移到dp[i-1][j-2] #include <map> #include <set…
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢. 王妃每次抓一仅仅老鼠.龙每次抓完一仅仅老鼠之后会有一仅仅老鼠跑出来. 每次抓老鼠和跑出来的老鼠都是随机的. 假设两个人都没有抓到白色老鼠则龙赢.王妃先抓. 问王妃赢的概率. 解析: 设dp[i][j]表示如今轮到王妃抓时有i仅仅白鼠,j仅仅黑鼠.王妃赢的概率 明显 dp[0][j]=0,0<=j…
It turns out that you are a great fan of rock band AC/PE. Peter learned that and started the following game: he plays the first song of the list of n songs of the group, and you have to find out the name of the song. After you tell the song name, Pet…
转自九野:http://blog.csdn.net/qq574857122/article/details/43643135 题目链接:点击打开链接 题意: 给定n ,k 下面n个数表示有一个n的排列, 每次操作等概率翻转一个区间,操作k次. 问: k次操作后逆序数对个数的期望. 思路: dp[i][j]表示 a[i] 在a[j] j前面的概率 初始就是 dp[i][j]  = 1( i < j ) 则对于翻转区间 [i, j], 出现的概率 P = 1 / ( n * (n+1) /2) 并且…
设dp[i][j]表示选到了第i张牌,牌号在j之前包括j的概率,cnt[i]表示有i张牌,inv[i]表示i在mod下的逆元,那我们可以考虑转移,dp[i][j]=dp[i-1][j-1]*cnt[j]*inv[n-i+1],这个只是表示当前成功转移到i j的状态,如果要考虑胜利的条件,显然是选在选一次j即可赢取胜率,那么对于答案ans只需要加上dp[i-1][j-1]*cnt[j]*inv[n-i+1]*(cnt[j]-1)*inv[n-i]即可,因为我们这个dp[i][j]是记录j之前所有的…
题意:会出石头.剪刀.布的人分别有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…
奉上官方题解 然后直接写的记忆化搜索 #include <cstdio> #include <iostream> #include <ctime> #include <vector> #include <cmath> #include <map> #include <queue> #include <algorithm> #include <cstring> using namespace std;…
大意: 给定01序列, 求随机交换k次后, 序列升序的概率. 假设一共$tot$个$0$, 设交换$i$次后前$tot$个数中有$j$个$0$的方案数为$dp[i][j]$, 答案即为$\frac{dp[k][tot]}{\sum\limits_{i=0}^{tot}{dp[k][i]}}$ 矩阵快速幂求出$dp[k][0]...dp[k][tot]$后即可得出答案.…
B. Maxim and Restaurant time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Maxim has opened his own restaurant! The restaurant has got a huge table, the table's length is p meters. Maxim has…
Name That Tune 刚开始我用前缀积优化dp, 精度炸炸的. 我们可以用f[ i ][ j ] 来推出f[ i ][ j + 1 ], 记得加加减减仔细一些... #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int>…
B. Jeff and Furik time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Jeff has become friends with Furik. Now these two are going to play one quite amusing game. At the beginning of the game Je…
蒟蒻数学渣呀,根本不会做. 解法是参考 https://blog.csdn.net/xs18952904/article/details/88785210 这位大佬的. 状态的设计和转移如上面博客一样:dp[i]代表当前序列的gcd为i的期望长度. 那么可以写出状态转移方程:dp[i]=(1+(x/m)∑(j|i,j≠i)dp[j]) / (1-(m/i)/m) (写得有点乱,其实和上面大佬的一样的) 这里要说一下的是 x=∑(t=1,t<=m) [ gcd(t,i)==j ]  就是怎么求1<…
Codeforces 28C Bath Queue LINK 简要题意:有 n 个人等概率随机进入 m 个房间,一个房间可以有多个人,第 i 个房间有 ai 个水龙头,在一个房间的人要去排队装水,他们会使得最长的队尽可能小,求所有房间中最长队列长度的期望 Mark一个很好的blog #include<bits/stdc++.h> using namespace std; #define N 110 #define fu(a,b,c) for(int a=b;a<=c;++a) #defi…
D. Bad Luck Island Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/problem/D Description The Bad Luck Island is inhabited by three kinds of species: r rocks, s scissors and p papers. At some moments of time two random i…
Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指定台下的人替代失败的人上去对决,失败的人出局.问在最优决策下,第一个人留到最后的概率. 思路: 首先要观察到这一性质:一号玩家要想取得最终胜利的概率尽可能大,一定要把他安排在最后上场,只打一次.获胜概率与当前擂主以及台下的人有关,所以这个是状态,容易想到需要用二进制表示来压缩状态. 然而想到这些还是不好做…
题目链接:https://codeforces.com/contest/1245/problem/E 题意:有一个10x10的网格,左下角是起点,左上角是终点,从起点开始,如图所示蛇形走到终点,每一步走的时候要摇骰子,骰子是几就走几步,但是到终点前的那6步,骰子必须是直接到终点的步数才能走过去,否则原地停留,题中还有一个条件,可能有一些网格上存在梯子,你可以直接沿着梯子到更高的一行,求从起点到终点的最小平均摇骰子的次数. 题解:这是一道明显的概率dp题,dp[i]表示到第i格子终点所需的期望,从…
题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢. 王妃每次抓一仅仅老鼠,龙每次抓完一仅仅老鼠之后会有一仅仅老鼠跑出来. 每次抓老鼠和跑出来的老鼠都是随机的. 假设两个人都没有抓到白色老鼠则龙赢.王妃先抓. 问王妃赢的概率. 第一次写的时候还是出问题了,还是对概率DP理解有问题: 当前状态满足条件的概率=segma(转移到状态si的概率pi * 状态i满足条件的概率) 但是一定要枚举出来全部可能转移的状态,并且仅仅考虑一步.就是说考虑一个游戏回合之…
Problem   Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input The first and only line contains a single integer mm (1≤m≤100000,1≤m≤100000). Output Print a single integer — the expected length of the array aa writte…
除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃圾,大哥拿来了一袋老鼠,其中有w只白老鼠和b只黑老鼠.胡小兔先抓,先抓到白老鼠的人赢. 每次学姐抓完老鼠之后,总会有另外一只老鼠从袋子里自己跑出来(这只老鼠不算任何人抓的),而胡小兔抓老鼠时则不会发生这样的事. 每次袋子里的每只老鼠被抓到的概率相等,当有一只老鼠跑出来的时候,每只老鼠跑出来的几率也相…
题目链接:http://codeforces.com/contest/768/problem/D 题意:一共有k种球,要得到k种不同的球至少一个,q个提问每次提问给出一个数pi,问概率大小大于等于pi 至少要几天,每天都能等概率的出一种球. 题解:一道简单的概率dp,很明显要设dp[i][j]表示第i天得到j种球的概率,转移方程如下. dp[i][j] = dp[i - 1][j - 1] * (1.0 * (k - j + 1) / k) + dp[i - 1][j] * (1.0 * j /…
/* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队伍的期望. 思路: 概率dp dp[i][j][k]代表前i个浴室有j个人最长队伍是k的概率. 枚举第i个浴室的人数.然后转移的时候其实是一个二项分布. */ #include<bits/stdc++.h> using namespace std; ]; ][][]; ][]; void init…
题意:有n个人进行m次比赛,每次比赛有一个排名,最后的排名是把所有排名都加起来然后找到比自己的分数绝对小的人数加一就是最终排名. 给了其中一个人的所有比赛的名次.求这个人最终排名的期望. 思路: 渣渣的第一道概率DP...弱渣. dp[i][j]代表进行了i轮比赛之后得分为j的人数的期望,可以知道dp[i][j]来自于dp[i-1][j-m...j-1]的期望的人数乘以概率.这里就是前缀和,用树状数组进行优化... 但是要注意,转移的时候一定要排除已经知道的名次的影响,不能用已知名次来转移...…
传送门 概率dp水题. 题意简述:给你数字表的大小和两个数列,数列中为0的数表示不确定,不为0的表示确定的,求第一个数列字典序比第二个数列大的概率. fif_ifi​表示第i ni~ ni n位第一个数列比第二个数列大的概率. 然后分是否为0的情况讨论一下就行了. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getch…
题目描述: Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The Bad Luck Island is inhabited by three kinds of species: r rocks, s scissors and p papers. At some moments of time…
题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n 要掷的次数的数学期望.然后每次掷的数就是1-6,概率都相等为1/6,再特殊标记一下飞行点,那么就容易写过了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #in…