zoukankan      html  css  js  c++  java
  • [国家集训队] 整数的lqp拆分

    题面:https://www.luogu.org/problemnew/show/P4451

    题解链接:https://www.luogu.org/blog/user31377/solution-p4451

    题解见代码注释 (或者我回来会放我在洛谷上写的题解)

    /*
        设 g[i] 为i的lqp拆分的权值和,则 g[i] = ∑f[j] * g[i-j]   + f[i],其中 g[0] = 0, g[1] = 1.
    	以前是推式子推出来结果的,那么今天就尝试用生成函数做一下:
    	    设 A = ∑f[i] * x^i , B = ∑g[i] * x^i ,那么 => B = A*B + A.
    		解一下 B ,发现 B = A/(1-A);
    		又∵ A的闭形式是 x/(1 - x - x^2) [斐波那契数的生成函数闭形式].
    		∴  B = x/(1 - 2x - x^2) ,于是直接由B的特征根 得出g[]的递推式 => g[i] = 2*g[i-1] + g[i-2]. 
    	
    	(生成函数太好用了2333)
    */
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int ha=1000000007;
    const int maxn=1000005;
    inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
    int main(){
    	int n,P=0,p=1,now=1; scanf("%d",&n);
    	for(int i=2;i<=n;i++,P=p,p=now) now=add(add(p,p),P);
    	printf("%d
    ",now);
    	return 0;
    } 
    

      

  • 相关阅读:
    Win10安装组策略功能
    IIS 站点批量迁移
    MongoDB 异常记录
    微信Web开发者工具
    NHibernate 异常
    Git 常用命令
    IIS 反向代理
    CSS应用
    Oracle
    Android之ActionBar学习
  • 原文地址:https://www.cnblogs.com/JYYHH/p/8886228.html
Copyright © 2011-2022 走看看