hdu5236 Article(贪心+概率dp)
2016-10-10 13:06
204 查看
hdu5236
题目
(抄别人的http://www.cnblogs.com/qscqesze/p/4543740.html)要求输入一篇N个字符的文章,对所有非负整数i:每到第i+0.1秒时可以输入一个文章字符
每到第i+0.9秒时有P的概率崩溃(回到开头或者上一个存盘点)
每到第i秒有一次机会可以选择按下X个键存盘,或者不存
打印完整篇文章之后必须存盘一次才算完成
输入多组N,P,X选择最佳策略使得输入完整篇文章时候按键的期望最小,输出此期望
思路
dp[i]表示敲i个字符的期望,不考虑保存的情况的dpdp[i]=dp[i-1]+p*(1+dp[i])+(1-p);
化简为: dp[i] = (dp[i-1] + 1) / ( 1- p)
然后贪心枚举保存次数,如果不能均匀分段,那么要利用贪心做成一些是x的段,一些是x+1的段。
代码
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; int n,x; double p; double dp[100010]; int main() { int T,kase=1; scanf("%d",&T); while(T--) { scanf("%d%lf%d",&n,&p,&x); for(int i=1; i<=n; i++) dp[i]=(1+dp[i-1])/(1-p); double ans=0x3f3f3f3f; for(int i=1; i<=n; i++) { int cnt=n%i; ans=min(ans,x*i+dp[n/i]*(i-cnt)+dp[n/i+1]*cnt); } printf("Case #%d: %.6lf\n",kase++,ans); } return 0; }
相关文章推荐
- HDU5236(概率DP,贪心)
- HDU 5236 Article (概率DP+贪心)
- HDU 5236 Article(概率dp+贪心)
- hdu - 5236 Article(2015上海大都会赛)概率dp
- uva 1456 - Cellular Network (贪心+概率+dp)
- hdu 5236 Article 概率dp
- HDU 5236 Article(概率DP+贪心 待解决)
- HDU 5236 Article [概率DP]
- hdu 5236 Article 概率dp
- UVaLive 4731 UVa 1456 - Cellular Network(概率DP 贪心)
- HDU 5236 Article 经典概率dp 由一种状态推到另一种状态
- UVA 1456 Cellular Network 贪心+概率dp
- HDU5236 Article(期望dp)
- hdu 5236 Article 概率dp
- sgu 422 Fast Typing 概率题DP
- zoj3822-Domination (概率dp)
- ACM学习历程—FZU2195 检查站点(树形DP || 贪心)
- 概率DP总结
- ZOJ 3735 Josephina and RPG 概率dp水题。
- POJ2151- Check the difficulty of problems(概率DP)