[bzoj1867][Noi1999][钉子和小球] (动态规划)
Description

Input
Output
Sample Input
Sample Output
Solution
设f[i][j]代表小球落到位置为(i,j)的概率,分数求解即可
#include <stdio.h>
#define L long long
#define RG register inline void Rin(RG int &x) {
x=;RG int c=getchar(),f=;
for(;c<||c>;c=getchar())
if(!(c^))f=-;
for(;c>&&c<;c=getchar())
x=(x<<)+(x<<)+c-;
x*=f; } inline void ploy(RG bool &x) {
RG char c=getchar();
while(c!='*'&&c!='.')c=getchar();
x=c=='*'?true:false; } void Shiki(RG L x) {
if(!x)return;
Shiki(x/);
putchar(x%+); } L gcd(RG L a,RG L b) {
return b?gcd(b,a%b):a; } bool _map[][]; int n,m; struct fr{
L n,d; fr(RG L _=,RG L __=) : n(_),d(__) {} }f[][]; inline void rec(fr &_this) {
L t=gcd(_this.n,_this.d);
_this.n/=t;
_this.d/=t; } fr operator + (const fr &a,const fr &b) {
fr res;
L t=gcd(a.d,b.d);
res.n=b.d/t*a.n+a.d/t*b.n;
res.d=a.d/t*b.d;
return res; } fr operator * (const fr &a,const fr &b) {
fr res(a.n*b.n,a.d*b.d);
rec(res);
return res; } void operator += (fr &a,const fr &b) {
a=a+b; } int main() {
Rin(n),Rin(m);
for(RG int i=; i<=n; i++)
for(RG int j=; j<=i; j++)
ploy(_map[i][j]);
f[][]=fr(,);
for(RG int i=; i<=n; i++)
for(RG int j=; j<=i; j++)
rec(f[i][j]),
_map[i][j]?
f[i+][j]+=f[i][j]*fr(,),f[i+][j+]+=f[i][j]*fr(,):
f[i+][j+]+=f[i][j];
rec(f[n+][m+]);
Shiki(f[n+][m+].n); putchar('/'); Shiki(f[n+][m+].d);
return ;
}
[bzoj1867][Noi1999][钉子和小球] (动态规划)的更多相关文章
- bzoj千题计划189:bzoj1867: [Noi1999]钉子和小球
http://www.lydsy.com/JudgeOnline/problem.php?id=1867 dp[i][j] 落到(i,j)的方案数 dp[i][j]=0.5*dp[i-1][j] ...
- 2018.09.24 bzoj1867: [Noi1999]钉子和小球(概率dp)
传送门 概率dp经典题. 如果当前位置(i,j)(i,j)(i,j)有钉子,那么掉到(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)的概率都是1/ ...
- bzoj1867: [Noi1999]钉子和小球(DP)
一眼题...输出分数格式才是这题的难点QAQ 学习了分数结构体... #include<iostream> #include<cstring> #include<cstd ...
- [POJ1189][BZOJ1867][CODEVS1709]钉子和小球
题目描述 Description 有一个三角形木板,竖直立放,上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1).每颗钉子和周围的钉子的距离都等于d,每个格子的宽度也都等于d,且 ...
- BZOJ 1867 [Noi1999]钉子和小球 DP
想状态和钉子的位置如何匹配想了半天...后来发现不是一样的吗$qwq$ 思路:当然是$DP$啦 提交:>5次(以为无故$RE$,实则是先乘后除爆了$long\space long$) 题解: 若 ...
- bzoj 1867: [Noi1999]钉子和小球【dp】
设f[i][j]为掉到f[i][j]时的概率然后分情况随便转移一下就好 主要是要手写分数比较麻烦 #include<iostream> #include<cstdio> usi ...
- POJ-1189 钉子和小球(动态规划)
钉子和小球 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7452 Accepted: 2262 Description 有一个 ...
- codevs 1709 钉子和小球
1709 钉子和小球 1999年NOI全国竞赛 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果题目描述 Description有一个三角形木板 ...
- bzoj1867钉子和小球
题目链接 简单$DP$ $$dp[1][1]=1(\text{显然})$$ $$map[i][j]=='*'?dp[i+1][j]+=dp[i][j]/2,dp[i+1][j+1]+=dp[i][j] ...
随机推荐
- JeePlus:目录
ylbtech-JeePlus:目录 1.返回顶部 0. http://www.jeeplus.org/ 0.2.文档 http://wiki.jeeplus.org/docs/show/75 0.3 ...
- 【148】DevExpress相关控件使用
---------------------------------------------------------------------------------------------------- ...
- Python基础 — NumPy
NumPy--简介 Numpy(Numerical Python的简称)是一个由多维数组对象和用于处理数组的例程集合组成的库. Numpy内部解除了Python的PIL(全局解释器锁),运算效率极 ...
- knockout 和mvc4结合使用
Knockout (或者Knockout.js ,KnockoutJS)是一个开源的JavaScript库,网址为www.knockoutjs.com.Knockout语法简洁.可读性好,能轻松实现与 ...
- 模拟 HDOJ 4552 Running Rabbits
题目传送门 /* 模拟:看懂题意,主要是碰壁后的转向,笔误2次 */ #include <cstdio> #include <algorithm> #include <c ...
- C# 自动批量导入图片到数据库中
using Model; using System; using System.Collections.Generic; using System.Data; using System.Data.Sq ...
- Eclipse里的Java EE视图在哪里?MyEclipse里的Java EE视图在哪里?MyEclipse里的MyEclipse Java Enterprise视图在哪里?(图文详解)
为什么要写这篇博客呢? 是因为,最近接触一个web项目. 然后呢,Eclipse里的Java EE视图的位置与MyEclipse里不太一样.为了自己梳理日后查找,也是为了新手少走弯路. Eclipse ...
- HTML5 WEB Storage - localStorage存储位置在哪
localStorage作为客户端浏览器持久化存储方案 这个是浏览器隔离的,每个浏览器都会把localStorage存储在自己的UserData中,如chrome一般就是 C:\Users\你的计算机 ...
- python对象以及pickle腌制
#python对象 1.什么是python的对象 2.详解pickle腌制 1.什么是python的对象 Python的内置的对象类型主要有数字.字符串.列表.元组.字典.集合等等.其实,在pytho ...
- DB2 系统命令与配置参数大全
主要包括4个部分,分别为: DB2 系统命令 DB2 数据库管理器配置参数 DB2 数据库系统配置参数 DB2 管理服务器(DAS)配置参数DB2 系统命令 dasauto - 自动启动 DB2 管理 ...