bzoj1867: [Noi1999]钉子和小球
来源:互联网 发布:latex mac官方下载 编辑:程序博客网 时间:2024/05/16 07:45
传送门
大力dp
首先的到状态:
小球落在第i行第j个钉子上的概率。
然后得到转移:
f[i+2][j+1]+=f[i][j](i,j没钉子)
f[i+1][j],f[i+1][j+1]+=f[i][j]/2(i,j有钉子)
“`
type arr=array [1..2] of int64;
var
a:array [-1..55,-1..55] of char;
f:array [-1..55,-1..55] of arr;
p:arr;
n,m,i,j:longint;
function gcd(x,y:int64):int64;
begin if (y=0) then exit(x) else exit(gcd(y,x mod y)); end;
procedure jia(var a:arr; b:arr);
var zi,mu,p:int64;
begin
p:=gcd(a[2],b[2]);
mu:=b[2]*(a[2] div p);
zi:=b[1](a[2] div p)+a[1](b[2] div p);
if (zi=0) then begin a[1]:=0; a[2]:=1; exit; end;
p:=gcd(mu,zi);
a[1]:=zi div p;
a[2]:=mu div p;
end;
begin
read(n,m);
for i:=0 to n-1 do
for j:=0 to i do begin
read(a[i,j]);
while (a[i,j]<>’*’) and (a[i,j]<>’.’) do read(a[i,j]);
end;
for i:=0 to n do
for j:=0 to i do f[i,j,2]:=1;
f[0,0,1]:=1;
for i:=0 to n-1 do
for j:=0 to i do
if a[i,j]=’*’ then begin
p:=f[i,j];
if p[1] mod 2=0 then p[1]:=p[1] div 2 else p[2]:=p[2]*2;
jia(f[i+1,j],p); jia(f[i+1,j+1],p);
end
else jia(f[i+2,j+1],f[i,j]);
write(f[n,m,1],’/’,f[n,m,2]);
end.
“
- bzoj1867: [Noi1999]钉子和小球
- bzoj1867: [Noi1999]钉子和小球
- 【BZOJ1867】[Noi1999]钉子和小球【DP】
- 1867: [Noi1999]钉子和小球
- 【NOI1999】钉子和小球(BSOI1477)
- BZOJ 1867 NOI1999 钉子和小球 动态规划
- 钉子和小球
- 钉子和小球
- 钉子和小球
- poj 1189 钉子和小球
- poj 1189 钉子和小球
- POJ 1189 钉子和小球
- POJ 1189 钉子和小球
- POJ 1189 钉子和小球
- POJ 1189 钉子和小球
- POJ1189:钉子和小球(DP)
- poj 1189 钉子和小球
- poj 1189 钉子和小球
- android中使用vlc
- 葵花宝典 十五 JSTL
- Gym Class(拓扑排序+vecteor+优先队列)-HDU5965
- Ubuntu下配置Tomcat服务器 mysql数据库并在windows中使用sqlyog 远程连接
- 高效人士的七个习惯——习惯四双赢思维
- bzoj1867: [Noi1999]钉子和小球
- UVA 1596 Bug Hunt
- VS 最常用快捷键
- 压力测试工具
- 这几天潜心研究一下mysql和sql优化,先不更新了
- docker初级命令
- javascript学习日记——(4)
- NOIP2012 JuniorT4 文化之旅
- [LeetCode] 203. Remove Linked List Elements