【题目链接】:https://hihocoder.com/problemset/problem/1489

【题意】



每轮游戏;

你一开始有p的概率获得超神标记;

如果这轮游戏你没获得超神标记;

那么你下一轮游戏获得超神标记的几率会加Q;

每获得一次超神标记之后;

下一轮游戏获得超神标记的初始概率变为上一次没有加过的初始概率的二分之一.

问你获得n个超神标记的期望游戏轮数是多少.

【题解】



把每种初始概率(0..100)获得一个超神标记的期望轮数算出来

->模拟题中给的那张图的方法;

然后一开始概率为p;

答案累加exp[p];

还有n-1个超神标记要拿

再加

exp[p/2]

还有n-2个超神标记..

一直累加到p变为0为止;

此后就都是概率为0的了;

则看看还剩几个超神标记要拿->x;

累加上exp[0]*x;

这里主要是期望的可加性。。



【Number Of WA】



0



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 110; int p,q,n;
double pre[N],ans = 0; int main()
{
//freopen("F:\\rush.txt","r",stdin);
cin >> p >> q >> n;
rep1(i,0,100)
{
double p1 = (100-i)/100.0;
int cnt = 1;
pre[i]+=i/100.0;
if (i==100) break;
while (1)
{
double now = (i+cnt*q)/100.0;
if (i+cnt*q>=100)
{
pre[i]+=(cnt+1)*p1;
break;
}
pre[i]+=(cnt+1)*p1*now;
p1 *= (1-now);
cnt++;
}
}
rep1(i,1,n)
{
if (p==0)
{
ans+=(n-i+1)*pre[0];
break;
}
ans+=pre[p];
p>>=1;
}
cout << fixed << setprecision(2) << ans << endl;
return 0;
}

最新文章

  1. .NET使用OpenSSL生成的pem密钥文件[1024位]
  2. Python-lambda函数,map函数,filter函数
  3. sdut1598 周游列国【简单模拟题】
  4. Sandbox 文件存放规则
  5. Android Cookie共享到WebView避免再次登录(保持登录状态)
  6. DynamoDB Local for Desktop Development
  7. PHPCMS v9栏目添加字段及描述编辑器修改方法
  8. Rails 撤销操作
  9. fiddle2 代理HTTPS请求无效?解决方法。
  10. 【编程技巧】一些 NSArray 的基本操作代码例子
  11. 如何在已安装Python条件下,安装Anaconda,,并将原有Python添加到Anaconda中
  12. ML.NET 示例:深度学习之集成TensorFlow
  13. js中通过Object.prototype.toString方法----精确判断对象的类型
  14. zabbix微信预警出现的问题
  15. 【Java并发编程】10、Java 理论与实践: 正确使用 Volatile 变量
  16. docker 创建tomcat镜像
  17. 关于markdown格式的测试..
  18. 【Android】Android 发送短信和打电话的方法
  19. Kali-linux使用NVIDIA计算机统一设备架构(CUDA)
  20. 异 形 卵 南阳acm709

热门文章

  1. Flume Netcat Source
  2. PCB 所建不凡 AWS 技术峰会2018 • 深圳站 2018.9.20
  3. window.onload的使用
  4. [Swift通天遁地]九、拔剑吧-(16)搭建卡片页面:Card Peek/Pop动态切换界面
  5. 对于Mobile模块化的概念认知(小白)
  6. js 中的定时器
  7. 将MongoDB服务器设置成Windows启动服务(win10)
  8. [Windows Server 2012] 手工创建安全网站
  9. [Windows Server 2008] ASP.net安装方法
  10. 类QQ账号生成阐述