【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇
题目描述
幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。
所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。
请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。
数据范围
对于100%的数据n<=5000。
=w=
性质:
以任意一个白点为根作子树时,在这棵子树中,白点和黑点的数量随深度呈斐波那契数列形态。
设当深度为i时,白点数量为w[i],白点数量前缀和为sum[i],黑点数量前缀和为f[i]。这些可以O(n)预处理。
我们对贡献分门别类:
1.lca是白点类
显然当两个点的lca是白点时,其中一个点是这个白点。
我们以每一个白点为根做子树来计算答案,具体地:
我们枚举一个i,表示这两个点的距离。
所有深度在[1,n−i]的白点都拥有与它距离为i的儿子,所以都可以对ans[i]作贡献。
然后这些白点的贡献都是相同的,而且都是w[i+1]。
那么对于一个i,ans[i]+=sum[n−i]∗w[i+1]。
2.lca是黑点类
同样枚举一个i和一个j,其中一个结点与lca距离为i,另一个结点与lca距离为j。
所有深度在[1,n−max(i,j)]的黑点都可以贡献ans[i+j]。
所以对于i,j,ans[i+j]+=f[n−max(i,j)]∗w[i]∗w[j+1]。
代码
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define ll long long
#define ln(x,y) (ll(log(x)/log(y)))
using namespace std;
const char* fin="raviel.in";
const char* fout="raviel.out";
const ll inf=0x7fffffff;
const ll mo=123456789;
const ll maxn=10007;
ll n,i,j,k;
ll f[maxn],g[maxn],sum[maxn],ans[maxn];
int main(){
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d",&n);
f[1]=0;
f[2]=1;
for (i=3;i<maxn;i++) f[i]=(f[i-2]+f[i-1])%mo;
for (i=1;i<maxn;i++) f[i]=(f[i]+f[i-1])%mo;
g[1]=1;
g[2]=0;
for (i=3;i<maxn;i++) g[i]=(g[i-2]+g[i-1])%mo;
for (i=1;i<maxn;i++) sum[i]=(sum[i-1]+g[i])%mo;
for (i=1;i<n;i++){
k=n-i;
ans[i]=(ans[i]+sum[k]*g[i+1])%mo;
}
for (i=1;i<n;i++)
for (j=1;j<n;j++){
k=n-max(i,j);
ans[i+j]=(ans[i+j]+f[k]*g[i]%mo*g[j+1])%mo;
}
for (i=1;i<=n*2;i++) printf("%lld ",ans[i]);
printf("\n");
return 0;
}
=o=
我认为在做这道题的时候的瓶颈是正确地对贡献分门别类。
然后要先枚举距离,在根据这个距离计数。
由于问题是每种距离的个数,那么这个问题决定了这道题必须先枚举距离来计数的特点。
至今还在纠结正确的枚举方式是怎样。
还有待决定。
【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇的更多相关文章
- 【NOIP2017提高组模拟12.10】幻魔皇
题目 幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对. 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子.神奇的节点对则是指白色节 ...
- 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
题目描述 降雷皇哈蒙很喜欢雷电,他想找到神奇的电光. 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的. 哈蒙想 ...
- 【NOIP2017提高组模拟12.10】神炎皇
题目 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 分析 设\(gcd(a,b)= ...
- 【JZOJ4919】【NOIP2017提高组模拟12.10】神炎皇
题目描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 数据范围 对于100%的数 ...
- NOIP2017提高组模拟赛 10 (总结)
NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...
- 【NOIP2017提高组模拟12.24】B
题目 现在你有N个数,分别为A1,A2,-,AN,现在有M组询问需要你回答.每个询问将会给你一个L和R(L<=R),保证Max{Ai}-Min{Ai}<=R-L,你需要找出并输出最小的K( ...
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
题目描述 数据范围 对于100%的数据,n<=100000,1<=A[i]<=5000 =w= Ans=∏1ai 代码 #include<iostream> #inclu ...
- 【NOIP2017提高组模拟12.17】环
题目 小A有一个环,环上有n个正整数.他有特殊的能力,能将环切成k段,每段包含一个或者多个数字.对于一个切分方案,小A将以如下方式计算优美程度: 首先对于每一段,求出他们的数字和.然后对于每段的和,求 ...
- 求hack or 证明(【JZOJ 4923】 【NOIP2017提高组模拟12.17】巧克力狂欢)
前言 本人在此题有一种不是题解的方法,但无法证明也找不到反例. 如果各位大神有反例或证明请发至 邮箱:qq1350742779@163.com Description Alice和Bob有一棵树(无根 ...
随机推荐
- jQuery3动画+创建元素
一.jQuery的动画 1.jQuery自带的动画 1>变化的是width height opacity display <!DOCTYPE html> <html lang= ...
- Android Studio && NDK开发
Android Studio下载安装网址:http://www.android-studio.org/index.php/download/hisversion 在下载界面可以查看安装包内是否包含SD ...
- PAT甲级——A1042 Shuffling Machine
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...
- 【MFC 】关于对话框中的OnVScroll() 和 OnHScroll
原文地址:[MFC 中]关于对话框中的OnVScroll() 和 OnHScroll()函数作者:Winters 对话框中的滑块,微调控件都会向OnVScroll() 和OnHScroll() ...
- System.Timer.Timer的一个安全类
class SafeTimer { private static System.Timers.Timer timer; public static Action DoWork; private sta ...
- LA4670 Dominating Patterns AC自动机模板
Dominating Patterns 每次看着别人的代码改成自己的模板都很头大...空间少了个0卡了好久 裸题,用比map + string更高效的vector代替蓝书中的处理方法 #include ...
- 系统io统计
$ cat /proc/diskstats sda sda1 sda2 gg- gg- gg- 主号 次号 名称 成功读 合并读 扇区读 读时间 每一列的含义分别为: 第一列为 设备号 (nu ...
- CF 578B "Or" Game
传送门 解题思路 题意大概是给你一个数列,可以进行k次操作,每次操作可以选择一个数乘x,问操作后的或的最大值.根据位运算,位数越高答案越优,所以贪心的使这k次操作全都放到一个数上,这样的结果肯定较优. ...
- vmware 虚拟机有时候显示有网络访问,但是打不开网页的白痴解决办法
我遇到这种情况的原因是经常更换电脑连接方式(手机wifi.校园网有线网.校园网无线网.电信网.隔壁同学wifi网),所以ip经常变动,所以产生了解决此问题的方法 先连好网络-->打开编辑--&g ...
- 公共钥匙盒 ccf
试题编号: 201709-2 试题名称: 公共钥匙盒 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里, ...