HDU 5236 Article 期望
题意:
你现在要打\(n\)个字符,但是程序随时可能会崩溃。
你可以在恰当的时机按下 \(Ctrl-S\)键,崩溃后,会从最后一次保存的情况继续开始打字。
具体是这样的:
- 在每个第\(i-0.1s(i>0)\)的时候,程序崩溃的概率为\(p\)
- 在每个第\(is(i \geq 0)\)的时候,你可以一口气按下\(x\)个键来存盘
- 在每个第\(i+0.1s(i \geq 0)\)的时候,你可以按下一个键来打字
求采取最优策略下,打完这\(n\)个字符,并且最后存盘,总按键次数的期望。
分析:
先不考虑可以存盘的情况,设\(d(i)\)为打印\(i\)个字符按键次数的期望。
有递推公式:\(d(i)=d(i-1)+1+p \cdot d(i)\)
当你打印出前\(i-1\)个字符,刚刚打完第\(i\)个的时候:
- 有概率\(p\)会崩掉,这时候要重新开始,还需要的按键数的期望为\(d(i)\)
- 有概率\(1-p\)没崩,打印完成了
化简一下得到:\(d(i)=\frac{1}{1-p}d(i-1)+\frac{1}{1-p}\)
然后再考虑存盘的情况,我们枚举存了\(x\)次盘,也就是把这\(n\)个字符分为\(x\)段,每打完一段就存一次盘。
由于\(\frac{1}{1-p}>1\),可以看出\(d(n)\)是指数型增长的,所以就尽可能均匀地把\(n\)个字符分成\(x\)段。
或者也可以求一下\(d(n)\)的通项公式为:\(d(n)=\frac{1}{p(1-p)^n}-\frac{1}{p}\)来验证。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100000 + 10;
const double INF = 1e20;
double d[maxn];
int main()
{
int T; scanf("%d", &T);
for(int kase = 1; kase <= T; kase++) {
int n, x; double p;
scanf("%d%lf%d", &n, &p, &x);
d[0] = 0;
for(int i = 1; i <= n; i++) d[i] = (d[i - 1] + 1.0) / (1.0 - p);
double ans = INF;
for(int i = 1; i <= n; i++) {
int k = n / i, r = n % i;
ans = min(ans, r*d[k+1] + (i-r)*d[k] + i*x);
}
printf("Case #%d: %.6f\n", kase, ans);
}
return 0;
}
HDU 5236 Article 期望的更多相关文章
- hdu 5236 Article 概率dp
Article Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5236 ...
- HDU 5236 Article(概率DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5236 题意:现在有人要在文本编辑器中输入n个字符,然而这个编辑器有点问题. 在i+0.1s(i>=0)的时 ...
- hdu 5236 Article(概率dp¥)
Article Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU 5236 Article (概率DP+贪心)
题意:要求输入一篇N个字符的文章,对所有非负整数i:每到第i+0.1秒时可以输入一个文章字符,每到第i+0.9秒时有P的概率崩溃(回到开头或者上一个存盘点) 每到第i秒有一次机会可以选择按下X个键存盘 ...
- HDU 5984 数学期望
对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1 ...
- HDU 5570 balls 期望 数学
balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5570 De ...
- poj 2096 Collecting Bugs && ZOJ 3329 One Person Game && hdu 4035 Maze——期望DP
poj 2096 题目:http://poj.org/problem?id=2096 f[ i ][ j ] 表示收集了 i 个 n 的那个. j 个 s 的那个的期望步数. #include< ...
- hdu 5159 Card (期望)
Problem Description There are x cards on the desk, they are numbered from 1 to x. The score of the c ...
- hdu 5245 Joyful(期望的计算,好题)
Problem Description Sakura has a very magical tool to paint walls. One day, kAc asked Sakura to pain ...
随机推荐
- 洛谷P3928 SAC E#1 - 一道简单题 Sequence2
提交地址 题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强. ...
- 死磕 java原子类之终结篇(面试题)
概览 原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换. 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割 ...
- SQL查找TCar表中同一辆车前后两条记录的CarId,两条记录中有多个字段值一样
查询同一个表中某一字段值相同的记录 select * from 表名 where 字段 in(select 字段 from 表名 group by 字段 having count(1)>1) s ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:2.技术简介之MinaFilter(1)
欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 Filter filter:过滤器?(不知道是不是这么翻译,算了知道意思就好了╮(╯▽╰)╭),这种东西在很多语言中 ...
- 关于学习Lisp的一点思考
以前读<黑客与画家>,其中对Lisp语言的赞美和推崇,让我燃起学习Lisp语言的强烈冲动,但很快发现在实际工作中应用的场景很少,出于功利心最终放弃了.直到上周未在家里读完了<大教堂与 ...
- Elasticsearch-分片原理2
Elasticsearch版本:6.0 一.Elasticsearch计算分片位置的公式 shard = hash(routing) % number_of_primary_shards 解释:rou ...
- fpathconf
http://pubs.opengroup.org/onlinepubs/009695399/functions/pathconf.html
- 常用css和js组件
1 . input框中插入图标 <div class="col-sm-12 col-xs-12 setLineHeight"> <div class=" ...
- 解决Mysql导入大数据出现gone away的问题
在用Mysql Yog或者PHPMyadmin等工具导入数据量大的sql文件时,会提示“gone away”,那么如何处理这个问题尼? 在Mysql对应的配置文件中my.ini文件中加入以下配置: # ...
- Java TCP通信
1.Socket原理 1)Socket简介 socket通常称作“套接字”,用于描述IP地址和端口号,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都 ...