题解 \(by\;zj\varphi\)

观察可发现一个点向它的子树走能到的白点,黑点数是一个斐波那契数列。

对于白色点对,可以分成两种情况:

  1. 两个白点的 \(lca\) 是其中一个白点

  2. 两个白点的 \(lca\) 是一个黑点

注意,两个白点的 \(lca\) 不可能是非两个白点之中的白点。

分开计算即可

Code:
  1. #include<bits/stdc++.h>
  2. #define ri register signed
  3. #define p(i) ++i
  4. using namespace std;
  5. namespace IO{
  6. char buf[1<<21],*p1=buf,*p2=buf,OPUT[100];
  7. #define gc() p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?(-1):*p1++
  8. template<typename T>inline void read(T &x) {
  9. ri f=1;x=0;register char ch=gc();
  10. while(!isdigit(ch)) {if (ch=='-') f=0;ch=gc();}
  11. while(isdigit(ch)) {x=(x<<1)+(x<<3)+(ch^48);ch=gc();}
  12. x=f?x:-x;
  13. }
  14. template<typename T>inline void print(T x,char t) {
  15. if (x<0) putchar('-'),x=-x;
  16. if (!x) return putchar('0'),(void)putchar(t);
  17. ri cnt(0);
  18. while(x) OPUT[p(cnt)]=x%10,x/=10;
  19. for (ri i(cnt);i;--i) putchar(OPUT[i]^48);
  20. return (void)putchar(t);
  21. }
  22. }
  23. using IO::read;using IO::print;
  24. namespace nanfeng{
  25. #define FI FILE *IN
  26. #define FO FILE *OUT
  27. template<typename T>inline T cmax(T x,T y) {return x>y?x:y;}
  28. template<typename T>inline T cmin(T x,T y) {return x>y?y:x;}
  29. typedef long long ll;
  30. static const int N=5e3+7,MOD=123456789;
  31. int h[N],f[N],g[N],n;
  32. ll ans;
  33. template<typename T>inline void MD(T &x) {x=x>=MOD?x-MOD:x;}
  34. inline int main() {
  35. //FI=freopen("nanfeng.in","r",stdin);
  36. //FO=freopen("nanfeng.out","w",stdout);
  37. read(n);
  38. f[0]=g[1]=h[1]=1;
  39. for (ri i(2);i<=n;p(i)) {
  40. f[i]=f[i-1]+f[i-2],MD(f[i]);
  41. g[i]=g[i-1]+g[i-2],MD(g[i]);
  42. h[i]=h[i-1]+g[i],MD(h[i]);
  43. }
  44. int l(n<<1);--n;
  45. for (ri i(1);i<=l;p(i)) {
  46. register ll tmp(0);
  47. for (ri j(0);j<=n-i;p(j)) tmp+=f[j],MD(tmp);
  48. ans=tmp*f[i]%MOD;
  49. ri p=cmin(i,n),q=cmax(i-n,1);
  50. for (ri j(q);j<p;p(j))
  51. ans=(ans+(ll)f[j]*f[i-j-1]%MOD*h[cmin(n-j,n-i+j)]%MOD),MD(ans);
  52. print(ans,' ');
  53. }
  54. return 0;
  55. }
  56. }
  57. int main() {return nanfeng::main();}

NOIP 模拟 $26\; \rm 幻魔皇$的更多相关文章

  1. NOIP 模拟 $26\; \rm 神炎皇$

    题解 \(by\;zj\varphi\) 一道 \(\varphi()\) 的题. 对于一个合法的数对,设它为 \((a*m,b*m)\) 则 \(((a+b)*m)|a*b*m^2\),所以 \(( ...

  2. NOIP 模拟 $26\; \rm 降雷皇$

    题解 \(by\;zj\varphi\) 用树状数组优化一下求最长上升子序列即可. 至于第二问,在求出答案后开 \(n\) 棵线段树,每颗维护当前最长上升子序列长度的方案数. Code #includ ...

  3. noip模拟26[肾炎黄·酱累黄·换莫黄]

    \(noip模拟26\;solutions\) 这个题我做的确实是得心应手,为啥呢,因为前两次考试太难了 T1非常的简单,只不过我忘记了一个定理, T2就是一个小小的线段树,虽然吧我曾经说过我再也不写 ...

  4. NOIP模拟26「神炎皇·降雷皇·幻魔皇」

    T1:神炎皇   又是数学题,气死,根本不会.   首先考虑式子\(a+b=ab\),我们取\(a\)与\(b\)的\(gcd\):\(d\),那么式子就可以改写成: \[(a'+b')*d=a'b' ...

  5. NOIP模拟 1

    NOIP模拟1,到现在时间已经比较长了.. 那天是6.14,今天7.18了 //然鹅我看着最前边缺失的模拟1,还是终于忍不住把它补上,为了保持顺序2345重新发布了一遍.. #   用  户  名   ...

  6. 2021.5.22 noip模拟1

    这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...

  7. [考试总结]noip模拟26

    首先看到这样中二的题目心头一震.... 然而发现又是没有部分分数的一天. 然而正解不会打.... 那还是得要打暴力. 但是这套题目有两个题目只有一个参数. 所以... (滑稽).jpg 然后我就成功用 ...

  8. 2021.7.28考试总结[NOIP模拟26]

    罕见的又改完了. T1 神炎皇 吸取昨天三个出规律的教训,开场打完T2 20pts直接大力打表1h. 但怎么说呢,我不懂欧拉函数.(其实exgcd都忘了 于是只看出最大平方因子,不得不线性筛,爆拿60 ...

  9. NOIP模拟

    1.要选一个{1,2,...n}的子集使得假如a和b在所选集合里且(a+b)/2∈{1,2,...n}那么(a+b)/2也在所选集合里 f[i]=2*f[i-1]-f[i-2]+g[i] g[n]:选 ...

随机推荐

  1. python使用笔记11--时间模块

    1.时间模块常用方法 1 import time,datetime 2 #格式化好的时间2020-05-16 18:30:52 3 #时间戳1589616753 从unix元年(计算机发明的时间)到现 ...

  2. Python入门学习指南

    对于初学者,入门至关重要,这关系到初学者是从入门到精通还是从入门到放弃.以下是结合Python的学习经验,整理出的一条学习路径,主要有四个阶段 NO.1 新手入门阶段,学习基础知识 总体来讲,找一本靠 ...

  3. github在不同电脑上协同开发

    当我换了电脑后,开发自己的github项目遇到了一些问题. 首先,git clone 'repository url'拉取下来项目,开始开发项目发.修改了一些文件后,当要git commit, git ...

  4. PAT乙级:1070 结绳 (25分)

    PAT乙级:1070 结绳 (25分) 题干 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟 ...

  5. Kafka之--自动启动zookeeper & kafka 脚本

    1) 首先配置SSH免密登录,在这里我用kafka(151)这台机器来作为启动脚本的存放和执行机器 [root@kafaka3 .ssh]# pwd #生成SSH KEY /root/.ssh [ro ...

  6. Java集合 - 初始化写法

    List的初始化方法 方法一 List<Integer> list= new ArrayList<Integer>(){{ add(1); add(2); add(3); }} ...

  7. P2490 [SDOI2011]黑白棋

    P2490 [SDOI2011]黑白棋 题意 一个 \(1*n\) 的棋盘上,A 可以移动白色棋子,B 可以移动黑色的棋子,其中白色不能往左,黑色不能往右.他们每次操作可以移动 1 到 \(d\) 个 ...

  8. python项目案例

    python项目案例1:----此学习案例用python3编写,摘自明日科技,感谢! 学生管理系统: 功能描述:具有增删改查,排序,保存并显示学生的全部信息. 1.主界面---函数menu(),显示功 ...

  9. 第十六篇 -- SuperIO学习

    一.SuperIO 这次主要研究SuperIO读取以及控制风扇转速的问题. 参考文章:https://huchanghui123.github.io/Linux/Linux-Superio-CPU-F ...

  10. dragover event 翻译

    当选择的元素或文本被拖拽到一个有效的放置目标上时(每几百毫秒),dragover事件就会被触发. 该事件在放置目标上被触发. Property Type Description target Read ...