题意:n个地雷(n<=10)在长度10^8的坐标轴上,yyf从横坐标为1的点开始,每一步有p的概率向右跳一格,(1-p)的概率向右跳两格(不会踩到中间一格),如果踩到地雷他就会死.问活下来的概率.(其实我们的yyf小朋友是被派去滚雷?)
首先考虑一个暴力的DP.记f[i]为活着经过横坐标为i的点的概率,
如果点i处无地雷则f[i]=f[i-1]*p+f[i-2]*(1-p)
如果点i处有地雷则f[i]=0
由此我们知道,如果yyf能活下来,他一定会经过最后一个地雷右边一格的位置t,所以我们要求的就是f[t],但是直接做显然会TLE.
这时候需要我们的一点直觉,就是DP数组在处理较长一段没有地雷的路径时会趋向于一个定值.可以认为离得很远的地雷对DP状态的贡献小到精度范围内可以忽略不计.通过打表观察发现大概500次就可以保证DP数组收敛到一个定值上(下界可能比500更低,因为已经足够通过本题就没有再试)
因此我们对于每一段没有地雷的区间,如果这段区间长度大于500,就把这段区间的长度缩减至500(具体实现时,如果这段区间的长度和500的差值为delta,就把这段区间后面的所有地雷的横坐标都减去delta),这里注意起点和第一个地雷之间的区间也要缩减(RuntimeError一发).然后再DP,区间总长度不会超过5000,稳稳地过了.如果题目中地雷的数目多一些,就可以卡掉这个做法.(如果要卡掉矩乘,需要坐标范围大到取log之后依然超时,不过范围出成那样也比较容易想到是缩减区间长度)
总结:对于有大范围是简单的特殊情况的问题,我们常常可以通过贪心,找规律等方法有效缩减问题规模,例如这道题和noip2005的过河都考虑到较长一段没有障碍物的区间将不会影响答案,还有poj的up and down用到贪心思想抽象出最短路的建图.
另外这道题网上除了漫天的矩阵快速幂,还有一种神奇的数学方法,见http://blog.csdn.net/qq_26572969/article/details/46825971
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
double f[];
int a[];
bool mine[];
int main(){
int n;double p;
while(scanf("%d%lf",&n,&p)!=EOF){
for(int i=;i<=n;++i){
scanf("%d",&a[i]);
}
sort(a+,a+n+);
for(int i=;i<n;++i){
if(a[i+]-a[i]>){
for(int j=n;j>i;--j){
a[j]-=(a[i+]-a[i]-);
}
}
}
memset(f,,sizeof(f));memset(mine,,sizeof(mine));
for(int i=;i<=n;++i)mine[a[i]]=true;
f[]=;
int t=a[n]+;
for(int i=;i<=a[n];++i){
if(!mine[i]){
f[min(i+,t)]+=f[i]*p;f[min(i+,t)]+=f[i]*(-p);
}
}
printf("%.7f\n",f[t]);
}
return ;
}

poj3744 Scout YYF I的更多相关文章

  1. poj3744 Scout YYF I[概率dp+矩阵优化]

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8598   Accepted: 2521 Descr ...

  2. POJ3744 Scout YYF I (矩阵优化的概率DP)

    Scout YYF I YYF is a couragous scout. Now he is on a dangerous mission which is to penetrate into th ...

  3. [Poj3744]Scout YYF I (概率dp + 矩阵乘法)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9552   Accepted: 2793 Descr ...

  4. [poj3744] Scout YYF I【概率dp 数学期望】

    传送门:http://poj.org/problem?id=3744 令f(i)表示到i,安全的概率.则f(i) = f(i - 1) * p + f(i - 2) * (1 - p),若i位置有地雷 ...

  5. POJ-3744 Scout YYF I 概率DP

    题目链接:http://poj.org/problem?id=3744 简单的概率DP,分段处理,遇到mine特殊处理.f[i]=f[i-1]*p+f[i-2]*(1-p),i!=w+1,w为mine ...

  6. POJ-3744 Scout YYF I (矩阵优化概率DP)

    题目大意:有n颗地雷分布在一条直线上,有个人的起始位置在1,他每次前进1步的概率为p,前进两步的概率为1-p,问他不碰到地雷的概率. 题目分析:定义状态dp(i)表示到了dp(i)的概率,则状态转移方 ...

  7. POJ3744 Scout YYF I 概率DP+矩阵快速幂

    http://poj.org/problem?id=3744 题意:一条路,起点为1,有概率p走一步,概率1-p跳过一格(不走中间格的走两步),有n个点不能走,问到达终点(即最后一个坏点后)不踩坏点的 ...

  8. POJ 3744 Scout YYF I

    分段的概率DP+矩阵快速幂                        Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

  9. poj 3744 Scout YYF I(概率dp,矩阵优化)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5020   Accepted: 1355 Descr ...

随机推荐

  1. NOI2018准备Day1

    今天刷基础题,字符串实在不想刷,做了20到多维数组题.老师说要10分钟一道,然而我加上整理差不多半小时一道吧... 总感觉自己效率比别人低了好多好多好多倍. 基础不牢,地动山摇,最近还是好好稳固基础题 ...

  2. mac系统上使用压缩包版的mysql(非安装版)

    mac本换了块固态硬盘,一切重新装过,mysql嫌官网下载太慢,直接百度 "mysql mac",第一个就是: 不料下载完后,发现这是一个压缩包版,并没有安装程序.网上搜索了一下, ...

  3. Java 集合与队列的插入、删除在并发下的性能比较

    这两天在写一个java多线程的爬虫,以广度优先爬取网页,设置两个缓存: 一个保存已经访问过的URL:vistedUrls 一个保存没有访问过的URL:unVistedUrls 需要爬取的数据量不大,对 ...

  4. 探究JVM——垃圾回收

    垃圾回收主要考虑三件事情:哪些内存需要回收?什么时候回收?如何回收? 一.哪些内存需要回收? 堆内存:对于JVM 来说,垃圾回收主要是针对堆内存中的对象实例. 方法区:垃圾收集行为在方法区是比较少出现 ...

  5. 2014 todo list

    1. 做好已知的各种项目,争取能成立固定团队2. 横向扩展技术学习,了解各种技术,加强技术素养3. 争取找个妹子4. 加强音律学习5. 继续发展各业余爱好6. 努力摇号 年底看收成.

  6. 深入浅出ASP.NET MVC5系列之一

    前言 为避免看官乏味,本系列博客限定在较新的.Net framework 4.5.1,Asp.net MVC5,IIS 7.X集成模式. 对于微软应用层的技术.我向来不舍得花太多时间学习.但又由于公司 ...

  7. go println与printf区别

    Println 与Printf 都是fmt 包中的公共方法 Println :可以打印出字符串,和变量: Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整 ...

  8. 一个奇妙的java坑:Long 类型的比较

    Long userId=127L; Long authorId=127L; System.out.println(userId==authorId);//true userId=128L; autho ...

  9. 如何删除GIT中的.DS_Store

    .DS_Store 是什么 使用 Mac 的用户可能会注意到,系统经常会自动在每个目录生成一个隐藏的 .DS_Store 文件..DS_Store(英文全称 Desktop Services Stor ...

  10. 基于tiny4412原生uboot修改制作SD启动并烧写到emmc

    最近入手tiny4412的标准板,底板SDK型号为1506.但是因为友善之臂提供的superboot不能进入boot菜单,此时我就不能通过tftp下载内核和通过nfs挂载根文件系统,于是想自己做个ub ...