poj3744
来源:互联网 发布:js 取前几个字符 编辑:程序博客网 时间:2024/05/20 04:28
【题意】
侦察兵YYF要通过一条布有地雷的路,他从1出发,每次有p的几率前进1格,1-p的几率前进两个,现已知所有地雷的位置,求YYF不踩中地雷的几率
【输入】
多组数据
每组数据第一行n、p
接下来一行n个数字表示地雷的位置
【输出】
YYF不踩中雷的几率
f[i]表示在没有地雷的情况下,走i距离的几率
可得f[i]=f[i-1]*p+f[i-2]*(1-p)
类似斐波那契的一个公式
构造一个矩阵
p 1
1-p 0
这个矩阵的i次方的(1,1)既是f[i]
然后按雷划分一下阶段即可
program poj3744;type square=array [1..2,1..2] of double;var n,i,j,k:longint; ans,p:double; mine:array [0..11] of longint; sol,root:square;procedure swap (var a,b:longint);inline;var i:longint;begin i:=a; a:=b; b:=i;end;procedure qsort (s,e:longint);var i,j,k:longint;begin if s>=e then exit; i:=s; j:=e; k:=mine[(s+e) div 2]; while i<=j do begin while mine[i]<k do inc(i); while mine[j]>k do dec(j); if i>j then break; swap(mine[i],mine[j]); inc(i); dec(j); end; qsort(s,j); qsort(i,e);end;function matrixmul (a,b:square):square;var ans:square; i,j,k:longint;begin fillchar(ans,sizeof(ans),0); for i:=1 to 2 do for j:=1 to 2 do for k:=1 to 2 do ans[i,j]:=ans[i,j]+a[i,k]*b[k,j]; exit(ans);end;function power (m:longint):square;var ans,now:square;begin ans[1,1]:=1; ans[1,2]:=0; ans[2,1]:=0; ans[2,2]:=1; now:=root; while m<>0 do begin if m and 1 = 1 then ans:=matrixmul(ans,now); m:=m div 2; now:=matrixmul(now,now); end; exit(ans);end;begin while not seekeof do begin read(n,p); for i:=1 to n do read(mine[i]); qsort(1,n); mine[0]:=0; root[1,1]:=p; root[1,2]:=1; root[2,1]:=1-p; root[2,2]:=0; ans:=1; for i:=1 to n do if mine[i-1]+1=mine[i] then begin ans:=0; break; end else begin sol:=power(mine[i]-(mine[i-1]+1)); ans:=ans*(1-sol[1,1]); end; writeln(abs(ans):0:7); end;end.
- poj3744
- poj3744 概率
- poj3744(概率DP)
- poj3744 Scout YYF I
- poj3744 Scout YYF I
- POJ3744----Scout YYF I
- 【POJ3744】【Scout YYF I】
- 【POJ3744】Scout YYF I
- poj3744 Scout YYF I 概率
- poj3744(概率DP+矩阵优化)
- poj3744 概率dp+矩阵乘法
- poj3744(概率DP+矩阵二分)
- POJ3744-Scout YYF I--概率DP
- poj3744之矩阵快速幂+概率DP
- poj3744(概率dp+快速幂)
- POJ3744(概率dp+矩阵快速幂)
- poj3744 概率dp + 矩阵快速幂
- [POJ3744]Scout YYF I 期望DP
- Memcache 键值key的格式和类型
- 精通oracle10g系统管理课后答案
- Install IPython on Windows
- FriendlyARM tiny6410 一步一步学与思(1)---LED application
- Ant工具 ant的安装与配置 ant作用
- poj3744
- mootool文档(core)
- 得到Linux的 所有的帮助文档
- 3D(三位变分同化)模式的安装和运行(三)
- JS base64编码加解密、JS编码转换
- 防止SQL注入- 整理篇
- VMWare Server 2.0虚拟机安装Windows Server 2003网卡工作不正常的解决
- bitmap优化
- 在bump mapping中使用normalize cube map的原因