HDU5236 Article(期望dp)

news/2024/11/24 3:56:02/

Article

传送门1
传送门2
As the term is going to end, DRD begins to write his final article.

DRD uses the famous Macrohard’s software, World, to write his article. Unfortunately this software is rather unstable, and it always crashes. DRD needs to write n characters in his article. He can press a key to input a character at time i+0.1, where i is an integer equal or greater than 0. But at every time i0.1 for integer i strictly greater than 0, World might crash with probability p and DRD loses his work, so he maybe has to restart from his latest saved article. To prevent write it again and again, DRD can press Ctrl-S to save his document at time i . Due to the strange keyboard DRD uses, to press Ctrl-S he needs to press x characters. If DRD has input his total article, he has to press Ctrl-S to save the document.

Since World crashes too often, now he is asking his friend ATM for the optimal strategy to input his article. A strategy is measured by its expectation keys DRD needs to press.

Note that DRD can press a key at fast enough speed.

Input

First line: an positive integer 0T20 indicating the number of cases.
Next T lines: each line has a positive integer n105 , a positive real 0.1p0.9 , and a positive integer x100 .

Output

For each test case: output ”Case #k: ans” (without quotes), where k is the number of the test cases, and ans is the expectation of keys of the optimal strategy.
Your answer is considered correct if and only if the absolute error or the relative error is smaller than 106.

Sample Input

2
1 0.5 2
2 0.4 2

Sample Output

Case #1: 4.000000
Case #2: 6.444444


题意

你现在要打n个字符,但是程序随时可能会崩溃。
你可以在恰当的时机按下 Ctrl−S键,崩溃后,会从最后一次保存的情况继续开始打字。
1. 在每个第 i0.1s(i>0) 的时候,程序崩溃的概率为p
2. 在每个第 is(i0) 的时候,你可以一口气按下x个键来存盘
3. 在每个第 i+0.1s(i0) 的时候,你可以按下一个键来打字
求采取最优策略下,打完这 n 个字符,并且最后存盘,总按键次数的期望。

分析

定义dp[i]表示敲出i个字符时按键期望。
因为敲第 i 个字符首先得敲出i1个字符,然后敲下一个字符时, 有两种可能, p 概率会丢失,(1p)概率不会丢失, 对于丢失的情况就还得重新敲 dp[i] 次, 不丢失的情况就只有一次就成功, 所以是 (1p)1 。于是得到

dp[i]=dp[i1]+p(1+dp[i])+(1p),

然后进行类似解方程的操作得到
dp[i]=(dp[i1]+1)1p.

另外,我们可以发现dp数组是指数增长的,而且 11p>1 ,所以随着 i 的增大, dp[i]增大的越快。我们可以枚举保存的次数k, 保存k次就相当于把n个字符分成k部分来完成, 由上面结论可知, 这k部分尽量均匀。

CODE

#include<cstdio>
#define N 100005
typedef double db;
int n,x;
db p,dp[N];
inline void Min(db &x,db y) {if(x>y)x=y;}int main() {int t;scanf("%d",&t);for(int cas=1; cas<=t; cas++) {scanf("%d%lf%d",&n,&p,&x);for(int i=1; i<=n; i++)dp[i]=(dp[i-1]+1)/(1-p);db ans=dp[n]+x;for(int i=2; i<=n; i++)Min(ans,dp[n/i+1]*(n%i)+dp[n/i]*(i-n%i)+i*x);printf("Case #%d: %.6f\n",cas,ans);}return 0;
}

http://www.ppmy.cn/news/165455.html

相关文章

英韧IG5236开卡工具的量产使用教程,IG5236固态开卡简单过程

英韧IG5236固态开卡工具是一款用于量产的工具&#xff0c;可以帮助用户快速对固态硬盘进行开卡&#xff0c;提高生产效率。本教程将详细介绍如何使用IG5236固态开卡工具进行量产。 第一步&#xff1a;准备工作 首先&#xff0c;需要准备好以下材料&#xff1a; 1. IG5236固态…

HDU 5236 Article(概率DP)

http://acm.hdu.edu.cn/showproblem.php?pid5236 题意&#xff1a;现在有人要在文本编辑器中输入n个字符&#xff0c;然而这个编辑器有点问题。 在i0.1s&#xff08;i>0&#xff09;的时刻可以输入一个字符。 在i0.9s&#xff08;i>0&#xff09;的时刻系统可能会崩溃&a…

Article HDU - 5236(概率DP)

题目 https://cn.vjudge.net/problem/HDU-5236 题意 一个打字机 在打完一个字后会有p概率坏掉&#xff0c;只能保留之前保存的&#xff0c;保存需要x秒并且期间打字机不会坏掉 问一个人打n个字采取什么策略需要的时间期望最小是多少 思路 期望DP dp[i] (dp[i-1] 1) / (…

概率dp hdu 5236

说好听一点又一次的涨姿势了&#xff0c;说难听一点又被虐的体无完肤。 感觉这道题难&#xff0c;首先连题目样例都没读懂。 算了直接上代码。 #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<iostream> #in…

Jzoj5236 利普希茨

对于一个整数序列A&#xff0c;我们定义f(A)max{floor(|Ai-Aj|/(j-i))}&#xff0c;这里i<j 给出一个长度为n的序列A&#xff0c;有q此操作 1.修改一个元素的值 2.询问A的一段区间[l,r]组成的序列的f(A[l..r]) 这里有一个很显然的结论&#xff0c;那就是使得f取到最大的i,j一…

P5236 【模板】静态仙人掌圆方树模板

链接&#xff1a; https://www.luogu.org/problem/P5236 题意&#xff1a; 你有一个 n ( n < 10000 ) n(n<10000) n(n<10000) 个点 m ( m < 20000 ) m(m<20000) m(m<20000) 条边的仙人掌&#xff0c;有 q ( q < 10000 ) q(q<10000) q(q<100…

Talk预告 | 新加坡国立大学张傲:10%成本定制类 GPT-4 多模态大模型

本期为TechBeat人工智能社区第502期线上Talk&#xff01; 北京时间06月01日(周四)20:00&#xff0c;新加坡国立大学在读博士生 — 张傲的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “10%成本定制类 GPT-4 多模态大模型 ”&#xff0c;届时将介…

hdu5236 Article

题意&#xff1a;你要输入一篇n个字的文章&#xff0c;每到i0.1s时可以输入一个字符&#xff0c;每到i0.9s时有p的概率会奔溃&#xff0c;回到开头或者上一个存盘点&#xff0c;每到第i秒有一次机会可以选择按x个健存盘或者不存&#xff0c;打印完整篇文章之后必须存盘一次才能…