题解:

考场上靠打表找规律切的题,不过严谨的数学推导才是本题精妙所在:
求:$\sum\prod_{i=1}^{m}F_{a{i}}$

设 $f(i)$ 为 $N=i$ 时的答案,$F_{i}$ 为斐波那契数列第 $i$ 项。
由于 $a$ 序列是有序的,要求的答案可以表示成:$f(i)=\sum_{j=1}^{i}f(j)*F_{i-j}$
由于斐波那契数列第 0 项是 0,显然可以表示成:
$f(i)=\sum_{j=1}^{i-1}f(j)*F_{i-j}$
考虑一下 $f(i+1)$ 和 $f(i)$ 的递推关系:

$f(i+1)-f(i)=\sum_{j=1}^{i}f(j)*F_{i-j+1}-\sum_{j=1}^{i-1}f(j)*F_{i-j}$

考虑等式右边:

$\sum_{j=1}^{i-1}f(j)\times (F_{a_{i}+1-j}-F_{a_{i}-j})+f(i)$

$\sum_{j=1}^{i-1}f(j)\times F_{a_{i}-1-j}+f(i)$

$f(i-1)+f(i)$,

于是我们就能推出 $f(i)=2\times f(i-1)+f(i-2)$

Code:

#include<cstdio>
#include<algorithm>
#include<string>
typedef long long ll;
using namespace std;
void setIO(string a){
freopen((a+".in").c_str(),"r",stdin);
freopen((a+".out").c_str(),"w",stdout);
}
const ll mod=1e9+7;
const int maxn=1000000+5;
ll f[maxn],ans[maxn];
int main(){
setIO("math");
int n;
scanf("%d",&n);
f[0]=0,f[1]=1,ans[1]=1;
for(int i=2;i<maxn;++i){
f[i]=f[i-1]+f[i-2];
f[i]%=mod;
}
for(int i=1;i<n;++i){
ans[i+1]=ans[i]*2+ans[i-1];
ans[i+1]%=mod;
}
printf("%lld\n",ans[n]);
return 0;
}

  

[国家集训队]整数的lqp拆分 数学推导 打表找规律的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 打表\数学【bzoj2173】: 整数的lqp拆分

    2173: 整数的lqp拆分 Description lqp在为出题而烦恼,他完全没有头绪,好烦啊- 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意 ...

随机推荐

  1. winforms控件

     我们在开发窗体应用时,控件是必不可少的今天我们就来认识一下控件 在认识控件之前还要先来认识一下窗体具体如下: 认识窗体和控件 窗体                                   ...

  2. Windows 10 秋季更新错误

    uefi 启动丢失修复 bcdboot c:\windows /s y: /f uefi /l zh-cn 0x80240034 你尝试安装的内部版本是有签名的外部测试版.若要继续安装,请启用外部测试 ...

  3. spline interpolation and draw image by matplotlib

    1 # spline interpolation and draw image by matplotlib from scipy import interpolate import matplotli ...

  4. Java EE体系结构

    1.什么是Java EE? java EE 利用java 2平台来简化企业解决方案的开发.部署和管理相关的复杂问题的体系结构 ,用于开发便于组装.健壮.可扩展.安全的服务器端java应用,是一套设计. ...

  5. HDU 5273 Dylans loves sequence【 树状数组 】

    题意:给出n个数,再给出q个询问,求L到R的逆序对的个数 先自己写的时候,是每次询问都重新插入来求sum(r)-sum(l) 果断T 后来还是看了别人的代码---- 预处理一下,把所有可能的区间的询问 ...

  6. ajax的异步请求小结

    如何判断是使用json还是jsp的数据传输: json字符串可以使用js,jquery,ajax,java这几种技术,页面为jsp页面,json数据为java后台传递来. 1.同步请求可以从因特网请求 ...

  7. eclipse历史版本下载地址

    http://wiki.eclipse.org/Older_Versions_Of_Eclipse

  8. 织梦(dedecms)循环调用多级子栏目如二级栏目下三级栏目

    本文是关于织梦DedeCMS调用多级子栏目的,拿来分享下. 后台已经建好栏目,对于产品展示栏 栏目导航如下图所示:  复制代码 代码如下: {dede:channelartlist cacheid=' ...

  9. Linux创建用户和随机密码

    #!/bin/bash#批量创建10个系统帐号并设置密码rm -f user.logfor name in `seq 10`do #非交互式的输入随机密码 password=`echo $RANDOM ...

  10. vuejs--递归组件(树型表格分享)

    前言    前段时间使用vue做了一套后台管理系统,其中使用最多就是递归组件,也因为自己对官方文档的不熟悉使得自己踩了不少坑,今天写出来和大家一起分享. 递归组件    组件在它的模板内可以递归地调用 ...