[国家集训队]整数的lqp拆分 数学推导 打表找规律
题解:
考场上靠打表找规律切的题,不过严谨的数学推导才是本题精妙所在:
求:$\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拆分 数学推导 打表找规律的更多相关文章
- BZOJ 2173 luoguo P4451 [国家集训队]整数的lqp拆分
整数的lqp拆分 [问题描述] lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 , ...
- Luogu4451 [国家集训队]整数的lqp拆分
题目链接:洛谷 题目大意:求对于所有$n$的拆分$a_i$,使得$\sum_{i=1}^ma_i=n$,$\prod_{i=1}^mf_{a_i}$之和.其中$f_i$为斐波那契数列的第$i$项. 数 ...
- [国家集训队]整数的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}^ ...
- 洛谷P4451 [国家集训队]整数的lqp拆分 [生成函数]
传送门 题意简述:语文不好不会写,自己看吧 思路如此精妙,代码如此简洁,实是锻炼思维水经验之好题 这种题当然是一眼DP啦. 设\(dp_n\)为把\(n\)拆分后的答案.为了方便我们设\(dp_0=1 ...
- 洛谷P4451 [国家集训队]整数的lqp拆分(生成函数)
题面 传送门 题解 我对生成函数一无所知 我们设\(F(x)\)为斐波那契数列的生成函数,\(G(x)\)为答案的生成函数,那么容易得到递推关系 \[g_n=\sum_{i=0}^{n-1}f_ig_ ...
- 洛谷 P4451 [国家集训队]整数的lqp拆分
洛谷 这个题目是黑题,本来想打表的,但是表调不出来(我逊毙了)! 然后随便打了一个递推,凑出了样例, 竟然. 竟然.. 竟然... A了!!!!!!! 直接:\(f[i]=f[i-1]*2+f[i-2 ...
- P4451 [国家集训队]整数的lqp拆分
#include <bits/stdc++.h> using namespace std; typedef long long LL; inline LL read () { LL res ...
- P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
正题 题目链接:https://www.luogu.com.cn/problem/P4451 题目大意 给出\(n\),对于所有满足\(\sum_{i=1}^ma_i=n\)且\(\forall a_ ...
- 打表\数学【bzoj2173】: 整数的lqp拆分
2173: 整数的lqp拆分 Description lqp在为出题而烦恼,他完全没有头绪,好烦啊- 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意 ...
随机推荐
- winforms控件
我们在开发窗体应用时,控件是必不可少的今天我们就来认识一下控件 在认识控件之前还要先来认识一下窗体具体如下: 认识窗体和控件 窗体 ...
- Windows 10 秋季更新错误
uefi 启动丢失修复 bcdboot c:\windows /s y: /f uefi /l zh-cn 0x80240034 你尝试安装的内部版本是有签名的外部测试版.若要继续安装,请启用外部测试 ...
- spline interpolation and draw image by matplotlib
1 # spline interpolation and draw image by matplotlib from scipy import interpolate import matplotli ...
- Java EE体系结构
1.什么是Java EE? java EE 利用java 2平台来简化企业解决方案的开发.部署和管理相关的复杂问题的体系结构 ,用于开发便于组装.健壮.可扩展.安全的服务器端java应用,是一套设计. ...
- HDU 5273 Dylans loves sequence【 树状数组 】
题意:给出n个数,再给出q个询问,求L到R的逆序对的个数 先自己写的时候,是每次询问都重新插入来求sum(r)-sum(l) 果断T 后来还是看了别人的代码---- 预处理一下,把所有可能的区间的询问 ...
- ajax的异步请求小结
如何判断是使用json还是jsp的数据传输: json字符串可以使用js,jquery,ajax,java这几种技术,页面为jsp页面,json数据为java后台传递来. 1.同步请求可以从因特网请求 ...
- eclipse历史版本下载地址
http://wiki.eclipse.org/Older_Versions_Of_Eclipse
- 织梦(dedecms)循环调用多级子栏目如二级栏目下三级栏目
本文是关于织梦DedeCMS调用多级子栏目的,拿来分享下. 后台已经建好栏目,对于产品展示栏 栏目导航如下图所示: 复制代码 代码如下: {dede:channelartlist cacheid=' ...
- Linux创建用户和随机密码
#!/bin/bash#批量创建10个系统帐号并设置密码rm -f user.logfor name in `seq 10`do #非交互式的输入随机密码 password=`echo $RANDOM ...
- vuejs--递归组件(树型表格分享)
前言 前段时间使用vue做了一套后台管理系统,其中使用最多就是递归组件,也因为自己对官方文档的不熟悉使得自己踩了不少坑,今天写出来和大家一起分享. 递归组件 组件在它的模板内可以递归地调用 ...