HDU 5236 Article(概率DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5236
题意:
现在有人要在文本编辑器中输入n个字符,然而这个编辑器有点问题。
在i+0.1s(i>=0)的时刻可以输入一个字符。
在i+0.9s(i>0)的时刻系统可能会崩溃,需要重新开始或者从上次保存点开始。
在i时刻可以选择保存,保存需要按x个键(假设按键速度极快)。最后完成时必须保存一下。
现在要你来确定一个最佳的输入策略,使得最后按键的期望值最小。
思路:
首先不考虑保存的情况:
则输入第i个字符的期望值为:$dp[i] = dp[i-1] + p*(1+dp[i]) + (1-p)$。化简后得:$dp[i]=(dp[i-1]+1)/(1-p)$。
接下来考虑保存的情况,可以猜想尽量的把保存点安排的均匀一些,即每输入k或k+1个字符就保存一次。那么可以枚举保存的次数,取最小值。
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 1e5+; int n, x;
double p;
double dp[maxn]; int main()
{
//freopen("in.txt","r",stdin);
int T;
int cas = ;
scanf("%d",&T);
while(T--)
{
scanf("%d%lf%d",&n,&p,&x);
for(int i=;i<=n;i++)
dp[i] = (dp[i-]+)/(-p);
double ans = 0x3f3f3f3f;
for(int i=;i<=n;i++)
{
int k = n/i;
int r = n%i;
ans = min(ans, r*dp[k+] + (i-r)*dp[k] + i*x);
//将剩余的r个字符分配到r块中,那么这r块需要敲k+1个字符
//剩余的i-r块则只需要敲k个字符
}
printf("Case #%d: %.6f\n", ++cas, ans);
}
return ;
}
HDU 5236 Article(概率DP)的更多相关文章
- 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+贪心)
题意:要求输入一篇N个字符的文章,对所有非负整数i:每到第i+0.1秒时可以输入一个文章字符,每到第i+0.9秒时有P的概率崩溃(回到开头或者上一个存盘点) 每到第i秒有一次机会可以选择按下X个键存盘 ...
- HDU 3853LOOPS(简单概率DP)
HDU 3853 LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...
- HDU - 1099 - Lottery - 概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...
- HDU 4405 【概率dp】
题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...
- HDU 4576 Robot(概率dp)
题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...
- HDU 4599 Dice (概率DP+数学+快速幂)
题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...
- [HDU 4089]Activation[概率DP]
题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...
- hdu 3853 LOOPS 概率DP
简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...
- HDU 3853 期望概率DP
期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每一个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] , 右移:[x][y ...
随机推荐
- Axis2之Spring装配
本章主要介绍axis2接口在spring项目中的整合配置. 使用jar包:axis2-1.6.2 spring2.5.6 目录结构: 关键代码: package com.alfred.bean; pu ...
- kali 开启ssh服务
1. 一.配置SSH参数 修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 将#PasswordAuthentication no的注释去掉,并且将NO修 ...
- vue-router基本使用
路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮 => home 内容, ...
- Django之MVC和MTV
一. MVC MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表). ...
- Piggy-Bank HDU - 1114
Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. ...
- php 接收blob数据流,base64数据流 转为 blob二进制数据流
php正常接收参数的方式如下:$_GET$_POST$_REQUEST 但是如果跨语言接收请求参数的话,可能会出现一系列的问题,其他语言的http请求可能是基于数据流的概念来传递参数的,如果按照常规处 ...
- Python求最大可能
也称为求一个集合的所有的子集 采用二进制方法: def PowerSetsBinary(items): #generate all combination of N items N = len(ite ...
- P2219 [HAOI2007]修筑绿化带(单调队列)
P2219 [HAOI2007]修筑绿化带 二维单调队列 写了这题 P2216 [HAOI2007]理想的正方形 后,你发现可以搞个二维单调队列 来保存矩形(i+1,i+A-1)(j+1,j+B-1 ...
- Java操作文件Util
package io.guangsoft.utils; import java.io.File; import java.io.FileInputStream; import java.io.File ...
- ajax返回数据
在使用远程js验证检测账户是否存在时,直在发请求后返回值无效,怎样把值返回回来呢重点注意两点 第一点:type不能省略,不能是异步,async: false 第二点:不能在直接请求成功后返回 var ...