题目链接:洛谷

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

数据范围:$n\leq 10^6$


首先不要被这个【国家集训队】给吓到了,其实很简单的。

首先考虑打表,。。。。(逃

显然一眼就能想到卷积,设$F(x)$为$f$的生成函数。则

$$F(x)=\frac{x}{1-x-x^2}$$

$$Ans=\sum_{i=0}^nF^i(x)[x^n]$$

$$=\frac{1}{1-\frac{x}{1-x-x^2}}[x^n]$$

$$=\frac{x}{1-2*x-x^2}[x^n]$$

根据直觉,这个多项式也是一个常系数齐次线性递推数列的生成函数,设为$G(x)$则

$$G(x)=2xG(x)+x^2G(x)+x$$

所以$g_{n+1}=2*g_n+g_{n-1}$

然后连矩阵乘法都不用就直接A了。

 #include<cstdio>
#define Rint register int
using namespace std;
const int mod = 1e9 + ;
int n, f1, f2, f3;
int main(){
scanf("%d", &n);
f1 = ; f2 = ;
if(n == ){puts(""); return ;}
for(Rint i = ;i <= n;i ++){
f3 = (2ll * f2 + f1) % mod;
f1 = f2; f2 = f3;
}
printf("%d", f3);
}

Luogu4451 [国家集训队]整数的lqp拆分的更多相关文章

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

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

  2. [国家集训队]整数的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}^ ...

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

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

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

    题面 传送门 题解 我对生成函数一无所知 我们设\(F(x)\)为斐波那契数列的生成函数,\(G(x)\)为答案的生成函数,那么容易得到递推关系 \[g_n=\sum_{i=0}^{n-1}f_ig_ ...

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

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

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

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

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

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

  8. P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】

    正题 题目链接:https://www.luogu.com.cn/problem/P4451 题目大意 给出\(n\),对于所有满足\(\sum_{i=1}^ma_i=n\)且\(\forall a_ ...

  9. [BZOJ2173]整数的lqp拆分

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

随机推荐

  1. return返回两个三元表达式的和,返回不正确,同样要注意在JavaScript中,也是如此

    public string b() { string b = ""; "; } public int c() { public string b() { string b ...

  2. Gorm使用详解

    1.什么是Gorm go语言编写的orm框架 特点: 1)全功能ORM 2)关联(包含一个,包含多个,属于,多对多) 3)Callbacks(创建/保存/更新/删除/查找前后回调) 4)预加载 5)事 ...

  3. NO.1 hadoop简介

    第一次接触这个时候在网上查了很多讲解,以下很多只是来自网络. 1.Hadoop (1)Hadoop简介    Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层 ...

  4. 解决MAMP启动mysql服务 但是Navicat连接不上

    问题重现 错误信息 2003 - Can't connect to MySQL server on '127.0.0.1' (61 "Connection refused") 解决 ...

  5. Java对象序列化全面总结

    前言 Java允许我们在内存中创建可复用的Java对象,但一般情况下,这些对象的生命周期不会比JVM的生命周期更长.但在现实应用中,可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重 ...

  6. GRE封装解封装过程

    GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(IPX, AppleTalk, IP,etc.)的数据报文进行封装,使这些被封装的数据报文能够 ...

  7. Linux 文件特殊权限_013

    ***Linux 系统文件除了9位基本权限,还有额外3位特殊权限,分别是SUID(setuid),SGID(setgid),SBIT(sticky bit) 一.Linux 系统文件3位特殊权限位说明 ...

  8. C#项目”XXXXX”针对的是”.NETFramework,Version=v4.7.1”但此计算机没有安装它

    遇到这样一个问题:C#项目”XXXXX”针对的是”.NETFramework,Version=v4.7.1”但此计算机没有安装它 就是我在打开别人的项目,发现别人的项目.Net Framework的版 ...

  9. MySQL命令学习

    上面两篇博客讲了MySQL的安装.登录,密码重置,为接下来的MySQL命令学习做好了准备,现在开启MySQL命令学习之旅吧. 首先打开CMD,输入命令:mysql -u root -p  登录MySQ ...

  10. cc攻击和ddos攻击

    DoS攻击.CC攻击的攻击方式和防御方法 DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of ...