URAL 1776 Anniversary Firework (概率,区间DP)
坑,一开始以为,分成两半的时候去最大那个就行了,
实际上这样是不对的,因为有可能出现小的一半的时间比大的要长,
因为还和等待次数有关,且转移的时候需要用到次数更小的状态,
所以状态定义为二维,dp[i][j]表示长度为i的区间,放小于等于j次的概率。
要求确切的某次的概率,比如k,就只要用dp[i][k]-dp[i][k-1]就行了。
如何转移?从小到大枚举i,从小到大枚举j,初始化dp[i][j] = dp[i][j-1],
然后求出确切等待j次的概率,以k为界限划分区间,分成l,r两段,加上l区间等待j-1次且r区间等待小于等于j-1次的概率,
类似得加上r区间等待j-1次且l区间等带小于等于j-1次的概率,然后减掉重复计算的状态。
因为只要求中间等待的次数,且一开始要放两个鞭炮,所以可以等效为一开始不计等待,之后每次都计算等待时间。
还有一个细节是每次j从2开始枚举,放一次的只可能是长度为1的情况。
g++使用%lf正常,但在有些oj却会出问题
#include<bits/stdc++.h>
using namespace std; const int maxn = ; double dp[maxn][maxn]; int main()
{
//freopen("in.txt","r",stdin);
int n; scanf("%d",&n);
n -= ; for(int i = ; i <= n; i++){
for(int j = i; j <=n; j++)
dp[i][j] = ;
} for(int i = ; i <= n; i++){
double e = ./i;
for(int j = ; j < i; j++){
dp[i][j] = dp[i][j-];
for(int k = ; k <= i; k++){
int l = k-,r = i-k;
double p1 = dp[l][j-] - dp[l][j-], p2 = dp[r][j-] - dp[r][j-];
double p3 = dp[l][j-];
double p4 = dp[r][j-];
dp[i][j] += e*(p1*p4 + p2*p3 - p2*p1);
}
}
}
double ans = ;
for(int i = ; i <= n; i++){
ans += (dp[n][i]-dp[n][i-])*i*;
}
printf("%.11lf\n",ans);
return ;
}
URAL 1776 Anniversary Firework (概率,区间DP)的更多相关文章
- UVA 10529 - Dumb Bones(概率+区间dp)
UVA 10529 - Dumb Bones option=com_onlinejudge&Itemid=8&category=518&page=show_problem&am ...
- URAL 1776 C - Anniversary Firework DP
C - Anniversary FireworkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...
- 树形DP URAL 1039 Anniversary Party
题目传送门 /* 题意:上司在,员工不在,反之不一定.每一个人有一个权值,问权值和最大多少. 树形DP:把上司和员工的关系看成根节点和子节点的关系,两者有状态转移方程: dp[rt][0] += ma ...
- hdu 4412 Sky Soldiers(区间DP)
Sky Soldiers Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- 【区间dp+组合数+数学期望】Expression
https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/I [题意] 给定n个操作数和n-1个操作符,组成一个数学式子.每次可以选择两个相 ...
- poj2342 Anniversary party (树形dp)
poj2342 Anniversary party (树形dp) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9128 ...
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
随机推荐
- sql语句之正则表达式
select * from employee where name regexp '^jin' select * from employee where name regexp '^jin.*(g|n ...
- 面试6-----11 const和静态变量那些事儿
6 看看const和指针的那些事儿 const在int*左边 const在int*右边 const在int*两边------>请看代码注释 (1)代码 #include <stdio.h& ...
- git 的安装使用以及协作流程
git安装: sudo apt-get install git-core git使用: 转:https://www.liaoxuefeng.com/wiki/0013739516305929606dd ...
- WPF后台通知前台事件(ViewModelBase记录)
版本1: 定义:public class ModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler P ...
- bootstrap的tab中,echarts 图表宽度设为100%之后,会出现图表宽带变为100px的情况。只有第一个正常
1.原因 echarts官方解释是 Tip: 有时候图表会放在多个标签页里,那些初始隐藏的标签在初始化图表的时候因为获取不到容器的实际高宽,可能会绘制失败,因此在切换到该标签页时需要手动调用resiz ...
- JAG Practice Contest for ACM-ICPC Asia Regional 2016 C题【贪心】
camp给出的题解: 题解:贪心,先算出最小需要的长度.然后从左到右依次确定每一位.复杂度O(n)O(n) 长度为 2n2n 的串可以构造出需要 [0,1+3+...+2n-1][0,1+3+...+ ...
- 51nod1459【二级最短路】
标签说的是BFS... 太菜,不知道怎么BFS...是不是spfa写,就叫BFS...感觉不是.... 只是二级最短路的写法,直接搞就很容易了,简单题: #include <bits/stdc+ ...
- Unity学习(六)5.x依赖打包
http://blog.sina.com.cn/s/blog_89d90b7c0102w2ox.html unity5已经封装好了接口,所以依赖打包并没有那么神秘和复杂了. 打包: 1.定义好资源的a ...
- Codevs 1140 Jam的计数法
1140 Jam的计数法 题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个 ...
- (十三)SpringBoot 发送E-mail
一:添加mail依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...