题面

传送门

题解

我对生成函数一无所知

我们设\(F(x)\)为斐波那契数列的生成函数,\(G(x)\)为答案的生成函数,那么容易得到递推关系

\[g_n=\sum_{i=0}^{n-1}f_ig_{n-i}+f_n
\]

其中\(g_0=0,g_1=1\)

那么写成生成函数的形式就是

\[G=FG+F
\]

\[G={F\over 1-F}
\]

我们考虑一下\(F\),因为

\[F(x)=\sum_{i=1}^\infty f_ix^i
\]

\[xF(x)=\sum_{i=2}^\infty f_{i-1}x^i
\]

上面的柿子减去下面的柿子

\[(1-x)F(x)=x+\sum_{i=2}^\infty f_{i-2}x^i
\]

\[(1-x)F(x)=x+x^2F(x)
\]

解得

\[F(x)={x\over 1-x-x^2}
\]

代入可解出

\[G(x)={x\over 1-2x-x^2}
\]

我们把\(1-2x-x^2\)因式分解一下

\[G(x)={x\over \left(1-(1+\sqrt{2})x\right)\left(1-(1-\sqrt{2})x\right)}
\]

然后裂项

\[G(x)={1\over 2\sqrt{2}}{1\over \left(1-(1+\sqrt{2})x\right)}-{1\over 2\sqrt{2}}{1\over \left(1-(1-\sqrt{2})x\right)}
\]

那么现在就变成两个等比数列求和的形式了,可以直接求出\(g_n\)的通项公式

\[g_n={(1+\sqrt{2})^n-(1-\sqrt{2})^n\over 2\sqrt{2}}
\]

听说大佬们用生成函数只要五行就能写完题解……然而我并看不懂它们在写什么……

//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
const int P=1e9+7,s=59713600;
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int ksm(R int x,R int y){
R int res=1;
for(;y;y>>=1,x=mul(x,x))if(y&1)res=mul(res,x);
return res;
}
int main(){
// freopen("testdata.in","r",stdin);
int n;scanf("%d",&n);
printf("%d\n",mul(dec(ksm(s+1,n),ksm(P+1-s,n)),ksm(mul(s,2),P-2)));
return 0;
}

洛谷P4451 [国家集训队]整数的lqp拆分(生成函数)的更多相关文章

  1. 洛谷P4451 [国家集训队]整数的lqp拆分 [生成函数]

    传送门 题意简述:语文不好不会写,自己看吧 思路如此精妙,代码如此简洁,实是锻炼思维水经验之好题 这种题当然是一眼DP啦. 设\(dp_n\)为把\(n\)拆分后的答案.为了方便我们设\(dp_0=1 ...

  2. 洛谷 P4451 [国家集训队]整数的lqp拆分

    洛谷 这个题目是黑题,本来想打表的,但是表调不出来(我逊毙了)! 然后随便打了一个递推,凑出了样例, 竟然. 竟然.. 竟然... A了!!!!!!! 直接:\(f[i]=f[i-1]*2+f[i-2 ...

  3. BZOJ 2173 luoguo P4451 [国家集训队]整数的lqp拆分

    整数的lqp拆分 [问题描述] lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 , ...

  4. P4451 [国家集训队]整数的lqp拆分

    #include <bits/stdc++.h> using namespace std; typedef long long LL; inline LL read () { LL res ...

  5. Luogu4451 [国家集训队]整数的lqp拆分

    题目链接:洛谷 题目大意:求对于所有$n$的拆分$a_i$,使得$\sum_{i=1}^ma_i=n$,$\prod_{i=1}^mf_{a_i}$之和.其中$f_i$为斐波那契数列的第$i$项. 数 ...

  6. [国家集训队]整数的lqp拆分

    我们的目标是求$\sum\prod_{i=1}^m F_{a_i}$ 设$f(i) = \sum\prod_{j=1}^i F_{a_j}$那么$f(i - 1) = \sum\prod_{j=1}^ ...

  7. [国家集训队]整数的lqp拆分 数学推导 打表找规律

    题解: 考场上靠打表找规律切的题,不过严谨的数学推导才是本题精妙所在:求:$\sum\prod_{i=1}^{m}F_{a{i}}$ 设 $f(i)$ 为 $N=i$ 时的答案,$F_{i}$ 为斐波 ...

  8. 模板—点分治A(容斥)(洛谷P2634 [国家集训队]聪聪可可)

    洛谷P2634 [国家集训队]聪聪可可 静态点分治 一开始还以为要把分治树建出来……• 树的结构不发生改变,点权边权都不变,那么我们利用刚刚的思路,有两种具体的分治方法.• A:朴素做法,直接找重心, ...

  9. [洛谷P1527] [国家集训队]矩阵乘法

    洛谷题目链接:[国家集训队]矩阵乘法 题目背景 原 <补丁VS错误>请前往P2761 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入 ...

随机推荐

  1. css垂直居中方案

    先介绍几种常见的垂直布局方式: 已知盒子具体宽度(宽度可以为百分比)(适用于居中浮动元素) 第一种: 给父元素相对定位,给子元素绝对定位 父布局 { position: relative; } 子布局 ...

  2. lucene4

    在lucene通过对应的API建立索引.在学习的过程中我们了解到lucene下面索引的建立与关系数据库有相似的地方. IndexReader.delete删除有两种删除的形式. 第三个改变Docume ...

  3. TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT

    一. 首先说下tcp端口的几种状态: 1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. 2.ESTABLISHED状态 ESTABLISHED的意思是建立连接.表示 ...

  4. C 预处理小结

    预处理功能主要包括宏定义,文件包含,条件编译三部分.分别对应宏定义命令,文件包含命令,条件编译命令三部分实现. 预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换.预处理 ...

  5. Java-精确计算工具类

    import java.math.BigDecimal; import java.math.RoundingMode; /** * 精确计算工具类(加,减,乘,除,返回较大值,返回较小值) */ pu ...

  6. ajax请求后台有时走有时不走

    ajax请求后台有时走有时不走   ajax请求后台有时走有时不走,是因为没有将请求设置为同步方式,async:false,(默认为true即异步).如果不想使用缓存可以将cache:false,例如 ...

  7. 为单个项目添加多个远程仓库(Git操作)

    书写代码时,有时候需要维护多个仓库,这时候就面对了这个需求,解决方法如下: $ git remote add github ****** $ git remote add mayun ****** 书 ...

  8. Cloudstack4.2之改变数据卷容量的大小(Resize Data Volumes)

    下图标注了这个功能在cloudstack4.2 UI中的位置 在cloudstack中是通过磁盘服务来设定卷的大小的.管理员可以设置相应的磁盘服务以供用户来使用.为了增强系统的灵活性,方便最终用户的使 ...

  9. 花了好几个小时的奇葩Mat为0问题

    问题 1. Mat mserMat = adaptive_image_from_points(contour, rect); CCharacter character; character.setCh ...

  10. 配置GIT DIFF/MERGE TOOL

    关闭prompt backup git config --global difftool.prompt false git config --global mergetool.prompt false ...