BZOJ 1867 [Noi1999]钉子和小球 DP
想状态和钉子的位置如何匹配想了半天。。。后来发现不是一样的吗$qwq$
思路:当然是$DP$啦
提交:>5次(以为无故$RE$,实则是先乘后除爆了$long\space long$)
题解:
若有钉子,左右各乘$\frac{1}{2}$转移,否则,向下两层直接转移。
对于分数,分别维护分子和分母,然后加起来的时候,记着一定要写成
up[i][j]=up[i][j]*(b/G)+a*(dn[i][j]/G);
dn[i][j]=dn[i][j]*(b/G);
而非
up[i][j]=up[i][j]*b/G+a*dn[i][j]/G;
dn[i][j]=dn[i][j]*b/G;
(好吧也是我傻$qwq$)
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define ull unsigned long long
#define ll long long
#define R register ll
#define pause (for(R i=1;i<=10000000000;++i))
#define In freopen("NOIPAK++.in","r",stdin)
#define Out freopen("out.out","w",stdout)
namespace Fread {
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
if(ch==EOF) return EOF; do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
} inline bool isempty(const char& ch) {return (ch<=||ch>=);}
inline void gs(char* s) {
register char ch; while(isempty(ch=getchar()));
do *s++=ch; while(!isempty(ch=getchar()));
}
} using Fread::g; using Fread::gs;
namespace Luitaryi {
const int N=;
int n,m;
ll up[N][N],dn[N][N];
bool w[N][N];
inline ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
inline void add(int i,int j,ll a,ll b) {
R G=gcd(dn[i][j],b);
up[i][j]=up[i][j]*(b/G)+a*(dn[i][j]/G);
dn[i][j]=dn[i][j]*(b/G);
G=gcd(up[i][j],dn[i][j]);
if(G) up[i][j]/=G,dn[i][j]/=G;
}
inline void main() {
n=g(),m=g()+;
for(R i=;i<=n;++i) for(R j=;j<=i;++j) { register char ch;
while(ch=getchar(),ch!='*'&&ch!='.');
w[i][j]=(ch=='*');
up[i][j]=,dn[i][j]=;
} for(R i=;i<=n;++i) up[n+][i]=,dn[n+][i]=;
up[][]=dn[][]=;
for(R i=;i<=n;++i) for(R j=;j<=i;++j) {
R a=up[i][j],b=dn[i][j];
if(w[i][j]) {
if(a%==) a/=; else b*=;
add(i+,j,a,b),add(i+,j+,a,b);
} else add(i+,j+,a,b);
} printf("%lld/%lld",up[n+][m],dn[n+][m]); }
}
signed main() {
Luitaryi::main();
}
2019.07.17
BZOJ 1867 [Noi1999]钉子和小球 DP的更多相关文章
- bzoj 1867: [Noi1999]钉子和小球【dp】
设f[i][j]为掉到f[i][j]时的概率然后分情况随便转移一下就好 主要是要手写分数比较麻烦 #include<iostream> #include<cstdio> usi ...
- 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钉子和小球(DP)
对钉子DP,如果钉子存在DP[i+1][j]+=DP[i][j]; DP[i+1][j+1]+=DP[i][j]; 如果不存在DP[i+2][j+1]+=4*DP[i][j]; 见代码:(有一个比较坑 ...
- [bzoj1867][Noi1999][钉子和小球] (动态规划)
Description Input 第1行为整数n(2<=n<=50)和m(0<=m<=n).以下n行依次为木板上从上至下n行钉子的信息,每行中‘*’表示钉子还在,‘.’表示钉 ...
- bzoj 2037: [Sdoi2008]Sue的小球——dp
Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩 ...
- POJ-1189 钉子和小球(动态规划)
钉子和小球 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7452 Accepted: 2262 Description 有一个 ...
- [BZOJ 4033] [HAOI2015] T1 【树形DP】
题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...
随机推荐
- poi 3061 尺取例题1
题目传送门/res tp poj 白书题 尺取法例题 #include<iostream> #include<algorithm> using namespace std; c ...
- 网站页面顶部出现空白行字符的原因以及完美解决办法
转自个人博客:https://www.hurbai.com 有时候网页头部会出现一个空白行,查看源码发现body开头初有一个非法字符 // 如果是Windows系统,修改为:$WIN = 1; $W ...
- 认识函数(python)
一般的函数都是有参数的,函数的参数都是放在函数定义的括号里的,函数参数的命名规则和我们说的变量的命名规则基本一样,一定要清晰明了.(能概括出它的意义,让人阅读你的代码,就知道这个参数是干嘛的就行).当 ...
- go环境变量配置 (GOROOT和GOPATH)的区别和含义
GOROOT就是go的安装路径 在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go ...
- 《深入理解 Java 虚拟机》学习 -- Java 内存模型
<深入理解 Java 虚拟机>学习 -- Java 内存模型 1. 区别 这里要和 JVM 内存模型区分开来: JVM 内存模型是指 JVM 内存分区 Java 内存模型(JMM)是指一种 ...
- ubuntu14 vim编译
(1) ./configure --prefix=/usr (2) make VIMRCLOC=/etc/vim VIMRUNTIMEDIR=/usr/share/vim/vim74 MAKE=&qu ...
- 关于EF数据迁移的个人总结 简单有效
有用的拿走,没用的嘴下留情!
- Javascript中的事件二
<!------------------示例代码一---------------------><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
- 网易云音乐ncm加密格式批量转换为flac,mp3
从网易云下载的某些付费歌曲下载下来会是ncm格式.ncm是个啥?就是你下完一首歌被网易云加密成它自己独有的ncm格式,这个ncm不能在其他播放器播放,如果网易云你会员到期了同样也会提示你无法播放(不是 ...
- scroll滚动条掩藏
掩藏scroll滚动条::-webkit-scrollbar ::-webkit-scrollbar {} /* 1 */ ::-webkit-scrollbar-button {} /* 2 */ ...