BZOJ 3057圣主的考验题解
老师居然考这么毒瘤的题目!!!!!
很容易想到dp,f[i][j]表示有i个节点,左子树的最深深度为j的方案数
枚举左子树有多少节点然后转移,复杂度为n^3
T飞~
我们考虑到有深度为h的树的节点有多少,可以发现深度为h的节点有着一定的范围
设minn为深度为h的树最少有多少节点,maxh为深度为h的数最多有多少节点
很显然minn[h]=minn[h-1]+minn[h-2]+1,maxh[h]=2^h-1
我们每一次转移时依然枚举左子树节点个数i,再次枚举深度是只需要枚举所有minn[h]<=i,切maxh[h]>=h的深度h
这样复杂度就变成了n^2*h,h为maxh[h]>3000的第一个h大约为20
但是它神奇的T掉了,我也不知道为什么......
# include<cstdio>
# include<cstring>
# include<cstdlib>
# include<algorithm>
using namespace std;
typedef long long LL;
const int mn = ;
const int mod = ;
int maxh[],minh[],L[mn + ],R[mn + ];
LL dp[mn + ][],ans[mn + ]; int main ()
{
dp[][]=dp[][]=, ans[]=;
minh[]=,minh[]=;
for(int i=;i<=;i++)
minh[i]=minh[i-]+minh[i-]+;
for(int i=;minh[i]<=mn && i<= ;i++)
for(int j=minh[i];j<min(minh[i+],mn+);j++)
R[j]=i;
maxh[]=;
for(int i=;i<=;i++)
maxh[i]=maxh[i-]*+;
L[]=;
for(int i=;maxh[i-]<=mn && i<=;i++)
for(int j=maxh[i-]+;j<=min(maxh[i],mn);j++)
L[j]=i;
for(int i=;i<=mn;i++)
{
for(int l=;l<i;l++)
{
int r=i--l;
for (int h=max(,L[i]-);h<=min(,R[i]-);h++)
{
if(h)
dp[i][h+]+=dp[l][h]*dp[r][h-];
(dp[i][h+]+=dp[l][h]*dp[r][h])%=mod;
dp[i][h+]+=dp[l][h]*dp[r][h+];
}
}
for(int h=;h<=min(,i);h++)
ans[i]+=dp[i][h];
ans[i] %= mod;
}
int n;
while(scanf("%d",&n),n)
printf(n>= ? "%09lld\n" : "%lld\n",ans[n]);
return ;
}
BZOJ 3057圣主的考验题解的更多相关文章
- BZOJ3057 圣主的考验
Poetize11的T3 DP神优化= =反正蒟蒻不会 Orz ZYF竟然找到了题解,反正我是没找到T T(百度空间:你太沙茶了,不给你看题解2333) 然后就对着标程写了一遍,然后T了...233 ...
- bzoj usaco 金组水题题解(2.5)
bzoj 2197: [Usaco2011 Mar]Tree Decoration 树形dp..f[i]表示处理完以i为根的子树的最小时间. 因为一个点上可以挂无数个,所以在点i上挂东西的单位花费就是 ...
- bzoj usaco 金组水题题解(2)
续.....TAT这回不到50题编辑器就崩了.. 这里塞40道吧= = bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 比较经典的最小割?..然而 ...
- bzoj usaco 金组水题题解(1)
UPD:我真不是想骗访问量TAT..一开始没注意总长度写着写着网页崩了王仓(其实中午的时候就时常开始卡了= =)....损失了2h(幸好长一点的都单独开了一篇)....吓得赶紧分成两坨....TAT. ...
- 洛谷 U78696 图书馆馆长的考验 题解
题面 1. 图书馆馆长的考验(library) 红魔馆的拥有者蕾米莉亚的好友帕秋莉是红魔馆的大图书馆的馆长.擅长操纵五行,名言是“万物都有属性.所谓的属性,和弱点是一样的”. 一天,因为魔理沙看了神之 ...
- [bzoj\lydsy\大视野在线测评]题解(持续更新)
目录: 一.DP 二.图论 1.最短路 2.强连通分量 三.利用单调性维护 四.贪心 五.数据结构 1.并查集 六.数学 1.计数问题 2.数学分析 七.博弈 八.搜索 /////////////// ...
- BZOJ:4333: JSOI2012 智者的考验
4333: JSOI2012 智者的考验 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 68 Solved: 18[Submit][Status][ ...
- [BZOJ 1260][CQOI2007]涂色paint 题解(区间DP)
[BZOJ 1260][CQOI2007]涂色paint Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为 ...
- [BZOJ 2257][JSOI2009]瓶子和燃料 题解(GCD)
[BZOJ 2257][JSOI2009]瓶子和燃料 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子 ...
随机推荐
- [转]Windows钩子
Windows钩子 Windows应用程序的运行模式是基于消息驱动的,任何线程只要注册了窗口类就会有一个消息队列来接收用户的输入消息和系统消息.为了取得特定线程接收或发送的消息,就要 Windows提 ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- git 命令行(一)-版本回退
1. 版本回退 在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么.版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用 git log 命 ...
- 前端页面布局之Grid布局
在讲布局前,先说两句题外话,写博时,突然想到了郭德纲说过的一个段子“说两个人骂架,不是你有理,你嗓门大,你唾沫星子崩我一脸,你就能骂赢,要看谁命长,过两年你死了,我站你坟头咋说咋是对的,你在那小匣里还 ...
- hdu 1171 (背包或者母函数问题)
Problem Description Nowadays, we all know that Computer College is the biggest department in HDU. Bu ...
- hibernate4多对多Use of @OneToMany or @ManyToMany targeting an unmapped class:
出错之后先查了一下,大家有 @Entity 导错包的,不过我这里没错 import javax.persistence.Entity; 就是这个 还有的是没有注解@Table的,我这里也是没问题的 我 ...
- Maven实战06_坐标和邮件服务模块
1:何为Maven坐标 为了能够自动化地解析任何一个Java构件,Maven就必须要将其唯一标识,这就是依赖管理的底层基础--坐标. 学过数学的人都知道平面直角坐标系,x,y分别为其横,纵坐标,将会在 ...
- [Day4] Nginx Http模块一
之前介绍了Nginx作为静态资源服务器的用法,除此之外,Nginx更多的场景是作为反向代理服务器,提高网站的并发和可用性.下面几节着重说一下作为反向代理的http模块,并且了解一些Nginx的架构. ...
- Python - 基本数据类型及其常用的方法之字典和布尔值
字典 特点:{"key1": value1, "key2":value2} , 键值对中的值可以为任何数据类型,键不能为列表.字典(无法哈希),布尔值可以为键 ...
- ubuntu16.04环境编译gSOAP
一.gSOAP简介 SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换.或者更简单地说:SOAP 是用于访问网络服务的协议. SOAP 提供了一种标准的方法,使得运行在 ...