【BZOJ3769】spoj 8549 BST again DP(记忆化搜索?)
【BZOJ3769】spoj 8549 BST again
Description
Input
Output
Sample Input
2 1
3 2
Sample Output
4
HINT
题解:直接列DP方程,设f[i][j]表示有i个节点,深度为j的二叉树个数,然后列出方程用前缀和优化转移即可(注意防重)。
然后光荣TLE了,正解貌似是记忆化搜索?不过懒得改了,卡了卡常数就过了。
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int P=1000000007;
int n,m;
int a[15],b[15];
int f[610][610],s[610][610];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
void init()
{
register int i,j,k;
f[0][0]=s[0][0]=1;
for(j=1;j<=m;j++) s[0][j]=1;
for(i=1;i<=n;i++) for(j=1;j<=m;j++)
{
if(i>=j) for(k=0;k<i;k++) f[i][j]=(f[i][j]+(ll)f[k][j-1]*s[i-k-1][j-1]+(ll)s[k][j-2]*f[i-k-1][j-1])%P;
s[i][j]=(s[i][j-1]+f[i][j])%P;
}
}
int main()
{
int i,T=rd();
for(i=1;i<=T;i++) a[i]=rd(),b[i]=rd()+1,n=max(n,a[i]),m=max(m,b[i]);
init();
for(i=1;i<=T;i++) printf("%d\n",f[a[i]][b[i]]);
return 0;
}
【BZOJ3769】spoj 8549 BST again DP(记忆化搜索?)的更多相关文章
- 【bzoj5123】[Lydsy12月赛]线段树的匹配 树形dp+记忆化搜索
题目描述 求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数. $n\le 10^{18}$ 题解 树形dp+记忆化搜索 设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根 ...
- 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
[题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...
- [题解](树形dp/记忆化搜索)luogu_P1040_加分二叉树
树形dp/记忆化搜索 首先可以看出树形dp,因为第一个问题并不需要知道子树的样子, 然而第二个输出前序遍历,必须知道每个子树的根节点,需要在树形dp过程中记录,递归输出 那么如何求最大加分树——根据中 ...
- poj1664 dp记忆化搜索
http://poj.org/problem?id=1664 Description 把M个相同的苹果放在N个相同的盘子里,同意有的盘子空着不放,问共同拥有多少种不同的分法?(用K表示)5.1.1和1 ...
- 状压DP+记忆化搜索 UVA 1252 Twenty Questions
题目传送门 /* 题意:给出一系列的01字符串,问最少要问几个问题(列)能把它们区分出来 状态DP+记忆化搜索:dp[s1][s2]表示问题集合为s1.答案对错集合为s2时,还要问几次才能区分出来 若 ...
- ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. Poor Ramzi -dp+记忆化搜索
ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. ...
- POJ 1088 DP=记忆化搜索
话说DP=记忆化搜索这句话真不是虚的. 面对这道题目,题意很简单,但是DP的时候,方向分为四个,这个时候用递推就好难写了,你很难得到当前状态的前一个真实状态,这个时候记忆化搜索就派上用场啦! 通过对四 ...
- 线性dp(记忆化搜索)——cf953C(经典好题dag和dp结合)
非常好的题!和spoj 的 Mobile Service有点相似,用记忆化搜索很容易解决 看了网上的题解,也是减掉一维,刚好可以开下数组 https://blog.lucien.ink/archive ...
- zoj 3644(dp + 记忆化搜索)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834 思路:dp[i][j]表示当前节点在i,分数为j的路径条数,从 ...
随机推荐
- apache的proxy代理总访问后端web的第一个虚拟主机
先查看cat /usr/local/apache2/modules 时候有mod_proxy.so mod_proxy_http.so mod_proxy_connect 如果没有,使用apache ...
- util.select.js
ylbtech-JavaScript-util: util.select.js 筛选工具 1.A,JS-效果图返回顶部 1.B,JS-Source Code(源代码)返回顶部 1.B.1, m.y ...
- 使navicat可以通过SSH连接MySQL数据库
1.编辑/etc/ssh/sshd_config,在最下面添加如下语句 KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libss ...
- [Angular] Debug Angular apps in production without revealing source maps
Source: https://blog.angularindepth.com/debug-angular-apps-in-production-without-revealing-source-ma ...
- 系统重装 Windows_VHD_辅助处理工具说明文档2
创建一个原始安装的VHD文件 如果采用原始安装的方式,则在WIN7的原始光盘中将install.wim这个文件提取到一个文件夹中备用.如果采用Ghost安装的方式,则将Ghost备份文件提取出来(.G ...
- bootstrap之PressKeyCode&&LongPressKeyCode
PressKeyCode package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiDevi ...
- Eclipse 使用 SVN 插件后改动用户方法汇总
判定 SVN 插件是哪个 JavaH 的处理方法 SVNKit 的处理方法 工具自带改动功能 删除缓存的秘钥文件 其他发表地点 判定 SVN 插件是哪个 常见的 Eclipse SVN 插件我知道的一 ...
- 压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
分类: 4.软件设计/架构/测试 2010-01-12 19:58 34241人阅读 评论(4) 收藏 举报 测试loadrunnerlinux服务器firebugthread 上篇讲如何用LoadR ...
- 如何在aspx页面中使用ascx控件(用户自定义的一个控件)?
aspx是页面文件ascx是用户控件,用户控件必须嵌入到aspx中才能使用. ascx是用户控件,相当于模板 其实ascx你可以理解为Html里的一部分代码,只是嵌到aspx里而已,因为aspx内容多 ...
- UVa 437 The Tower of Babylon(DP 最长条件子序列)
题意 给你n种长方体 每种都有无穷个 当一个长方体的长和宽都小于还有一个时 这个长方体能够放在还有一个上面 要求输出这样累积起来的最大高度 由于每一个长方体都有3种放法 比較不好控制 ...