【JZOJ 4921】 幻魔皇
来源:互联网 发布:excel比对两列数据 编辑:程序博客网 时间:2024/06/02 05:20
Description
幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。
所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。
请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。
对于100%的数据n<=5000
Analysis
首先你把树画出来
对于那些白点对,分两类计算
1一个白点是另一个的lca
思路:枚举深度
2两个白点的lca是一个黑点
思路:还是枚举深度,左边白点可能的个数 * 右边白点可能的个数 * 可能的子树个数累加答案
Code
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long long ll;const ll N=5010,mo=123456789;ll n,f[N],ans[N*2];int main(){ freopen("raviel.in","r",stdin); freopen("raviel.out","w",stdout); scanf("%lld",&n); f[1]=f[3]=f[4]=1; fo(i,5,n+3) f[i]=(f[i-1]+f[i-2])%mo; fo(i,2,n) fo(j,1,n-i) (ans[i]+=f[j]*f[1+i]%mo)%=mo; fo(i,1,n) fo(j,1,n) (ans[i+j]+=((f[n-max(i,j)+3]-1+mo)*f[i]%mo*f[j+1]%mo))%=mo; fo(i,1,n*2) printf("%lld ",ans[i]); return 0;}
0 0
- 【JZOJ 4921】 幻魔皇
- 【JZOJ 4921】幻魔皇
- JZOJ 4921. 【NOIP2017提高组模拟12.10】幻魔皇
- [JZOJ 3424] 粉刷匠 && [JZOJ 4254] 集体照
- [JZOJ 1280]最大匹配
- [JZOJ 1281]旅行
- [1282 JZOJ]资源勘探
- [JZOJ 1283]排序统计
- JZOJ NOIP2014模拟 8.12
- JZOJ NOIP2014模拟 8.13
- [JZOJ 1598]文件修复
- 【JZOJ 3111】单词查找
- 【JZOJ 3112】开会
- JZOJ 3463 军训
- 【JZOJ】3169 生产汽车
- 【JZOJ】3187 的士
- 【JZOJ】3188 找数
- 【JZOJ】3196 物理
- Struts2(二)——配置文件struts2.xml的编写
- Shell Bash变量
- Resource 方法解析
- Struts2(三)——数据在框架中的数据流转问题
- Problem-2049 不容易系列之(4)—考新郎
- 【JZOJ 4921】 幻魔皇
- 字符串替换
- Android应用资源---字符串资源类型(String)
- memcache 和 memcached 的区别分析
- 有关spark mlib中决策树其他博客补充
- CSDN博客转载方法
- Struts2(四)——页面相关内容
- 读取HDFS文件目录的方法
- Visual Studio的project配置opencv环境