题目

幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。

所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。

请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。

分析



我们找一找每层黑点和白点的规律

层数 白点数 黑点数
1 1 0
2 0 1
3 1 1
4 1 2
5 2 3
......

又发现一棵以白点为根的子树和原树结构一样,

一棵以黑点为根的子树和从第二层开始原树结构一样,

预处理出每层黑白点的个数,个数前缀和以及每层黑白点的个数,个数前缀和。

那么假设神奇点对的lca为白点,那么lca一定是点对中的一个点(观察结构得出),

枚举距离为i,那么个数就是一颗以白点为根的子树第i+1层的白点个数,乘以有多少个这样的子树。

同样,假设神奇点对的lca为黑点,

枚举两个点到达lca的距离分别为i和j,那么个数就是一颗以黑点为根的子树第i+1层的白点个数,乘以一颗以黑点为根的子树第i+1层的白点个数,乘以有多少个这样的子树。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const long long mo=123456789;
const int N=5005;
using namespace std;
long long w[N],sum[N],n,ans[N*2],b[N],sum1[N];
int main()
{
scanf("%lld",&n);
w[1]=1;
w[2]=0;
w[3]=1;
for(int i=4;i<=n;i++) w[i]=(w[i-1]+w[i-2])%mo;
for(int i=1;i<=n;i++) sum[i]=(sum[i-1]+w[i])%mo;
b[1]=0;
b[2]=1;
for(int i=3;i<=n;i++) b[i]=(b[i-1]+b[i-2])%mo;
for(int i=1;i<=n;i++) sum1[i]=(sum1[i-1]+b[i])%mo;
for(int i=1;i<=n;i++)
ans[i]=sum[n-i]*w[i+1]%mo;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
ans[i+j]=(ans[i+j]+sum1[n-max(i,j)]*w[i]%mo*w[j+1]%mo)%mo;
}
for(int i=1;i<=n*2;i++) printf("%lld ",ans[i]);
}

【NOIP2017提高组模拟12.10】幻魔皇的更多相关文章

  1. 【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇

    题目描述 幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对. 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子.神奇的节点对则是指白 ...

  2. 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇

    题目描述 降雷皇哈蒙很喜欢雷电,他想找到神奇的电光. 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的. 哈蒙想 ...

  3. 【NOIP2017提高组模拟12.10】神炎皇

    题目 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 分析 设\(gcd(a,b)= ...

  4. 【JZOJ4919】【NOIP2017提高组模拟12.10】神炎皇

    题目描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 数据范围 对于100%的数 ...

  5. NOIP2017提高组模拟赛 10 (总结)

    NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...

  6. 【NOIP2017提高组模拟12.24】B

    题目 现在你有N个数,分别为A1,A2,-,AN,现在有M组询问需要你回答.每个询问将会给你一个L和R(L<=R),保证Max{Ai}-Min{Ai}<=R-L,你需要找出并输出最小的K( ...

  7. 【JZOJ4928】【NOIP2017提高组模拟12.18】A

    题目描述 数据范围 对于100%的数据,n<=100000,1<=A[i]<=5000 =w= Ans=∏1ai 代码 #include<iostream> #inclu ...

  8. 【NOIP2017提高组模拟12.17】环

    题目 小A有一个环,环上有n个正整数.他有特殊的能力,能将环切成k段,每段包含一个或者多个数字.对于一个切分方案,小A将以如下方式计算优美程度: 首先对于每一段,求出他们的数字和.然后对于每段的和,求 ...

  9. 求hack or 证明(【JZOJ 4923】 【NOIP2017提高组模拟12.17】巧克力狂欢)

    前言 本人在此题有一种不是题解的方法,但无法证明也找不到反例. 如果各位大神有反例或证明请发至 邮箱:qq1350742779@163.com Description Alice和Bob有一棵树(无根 ...

随机推荐

  1. P1936 【水晶灯火灵】

    lalala~~(才不会告诉你这是题面呢) 这题确实有点坑,第一遍穷举超时,然后就开始了漫漫找规律之路... 终于,在经过5分钟的纠结之后,我终于发现了这个神奇的规律,那就是 Fabonacci!!! ...

  2. Docker 容器操作

    1. 创建并运行 一个容器 docker run -it --rm   centos:latest  bash run  运行容器 -it  以交互方式运行容器 --rm  退出容器后删除容器 cen ...

  3. 【VS开发】【图像处理】GigE和USB3 vision选择?

    [VS开发][图像处理]GigE和USB3 vision选择? 具体得看你现场的应用吧,如 现场需要的工作距离,网线可达到100m以内,USB3.0一般般的5m以内: GigE双端都有卡扣,保证了与相 ...

  4. json得回顾

  5. openvswitch笔记

    下载解压sudo wget http://openvswitch.org/releases/openvswitch-2.4.1.tar.gztar -xvf openvswitch-2.4.1.tar ...

  6. WordPress 在Ubuntu下安装插件、主题输入FTP后无法创建目录

    最近自己在搞基于lnmp+wordpress的个人博客, 一切都就绪后,想改变下自己的主题,然后去Wordpress里面内置的主题安装下载的时候,提示:无法创建目录! 一般我们在Ubuntu系统上面安 ...

  7. css样式实例

    * { box-sizing: border-box; } /*box-sizing属性允许您以特定的方式定义匹配某个区域的特定元素*/ body { font: Arial; margin:; } ...

  8. python中self与__init__怎么解释能让小白弄懂?

    python中self与__init__怎么解释能让小白弄懂? 这个问题其实没那么简单. 只说一下自己的理解. python 里所有的 object 都有三个属性, 标识(identity), 类型( ...

  9. selenium与页面交互之二:webelement类的属性

    webelement类的属性如下: element.size()   获取元素的大小 element.tag_name() 获取元素的HTML标签名称 element.text()   获取元素的文本 ...

  10. 前端技术之:如何Mock GraphQL接口数据

    // 第一步:引入所依赖的库const { makeExecutableSchema, addMockFunctionsToSchema } = require('graphql-tools');co ...