当前位置: 首页 > news >正文

北京建行网站/app制作公司

北京建行网站,app制作公司,crm系统哪种品牌的好,wordpress微信排版BM求线性递推是最近了解到的一个黑科技 如果一个数列、其能够通过线性递推而来 例如使用矩阵快速幂优化的 DP 大概都可以丢进去 则使用 BM 即可得到任意 N 项的数列元素 参考博客 : 暂时没有、 找到了一个、希望你能看懂吧、click here 以下是 2018 焦作网络赛 L 题 AC 代码、可…

 

BM求线性递推是最近了解到的一个黑科技

如果一个数列、其能够通过线性递推而来

例如使用矩阵快速幂优化的 DP 大概都可以丢进去

则使用 BM 即可得到任意 N 项的数列元素

 

参考博客 : 暂时没有、 找到了一个、希望你能看懂吧、click here

 

以下是 2018 焦作网络赛 L 题 AC 代码、可做模板

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <cassert>
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
// head

ll n;
namespace linear_seq {const int N=10010;ll res[N],base[N],_c[N],_md[N];vector<int> Md;void mul(ll *a,ll *b,int k) {rep(i,0,k+k) _c[i]=0;rep(i,0,k) if (a[i]) rep(j,0,k) _c[i+j]=(_c[i+j]+a[i]*b[j])%mod;for (int i=k+k-1;i>=k;i--) if (_c[i])rep(j,0,SZ(Md)) _c[i-k+Md[j]]=(_c[i-k+Md[j]]-_c[i]*_md[Md[j]])%mod;rep(i,0,k) a[i]=_c[i];}int solve(ll n,VI a,VI b) { // a 系数 b 初值 b[n+1]=a[0]*b[n]+...ll ans=0,pnt=0;int k=SZ(a);assert(SZ(a)==SZ(b));rep(i,0,k) _md[k-1-i]=-a[i];_md[k]=1;Md.clear();rep(i,0,k) if (_md[i]!=0) Md.push_back(i);rep(i,0,k) res[i]=base[i]=0;res[0]=1;while ((1ll<<pnt)<=n) pnt++;for (int p=pnt;p>=0;p--) {mul(res,res,k);if ((n>>p)&1) {for (int i=k-1;i>=0;i--) res[i+1]=res[i];res[0]=0;rep(j,0,SZ(Md)) res[Md[j]]=(res[Md[j]]-res[k]*_md[Md[j]])%mod;}}rep(i,0,k) ans=(ans+res[i]*b[i])%mod;if (ans<0) ans+=mod;return ans;}VI BM(VI s) {VI C(1,1),B(1,1);int L=0,m=1,b=1;rep(n,0,SZ(s)) {ll d=0;rep(i,0,L+1) d=(d+(ll)C[i]*s[n-i])%mod;if (d==0) ++m;else if (2*L<=n) {VI T=C;ll c=mod-d*powmod(b,mod-2)%mod;while (SZ(C)<SZ(B)+m) C.pb(0);rep(i,0,SZ(B)) C[i+m]=(C[i+m]+c*B[i])%mod;L=n+1-L; B=T; b=d; m=1;} else {ll c=mod-d*powmod(b,mod-2)%mod;while (SZ(C)<SZ(B)+m) C.pb(0);rep(i,0,SZ(B)) C[i+m]=(C[i+m]+c*B[i])%mod;++m;}}return C;}int gao(VI a,ll n) {VI c=BM(a);c.erase(c.begin());rep(i,0,SZ(c)) c[i]=(mod-c[i])%mod;return solve(n,c,VI(a.begin(),a.begin()+SZ(c)));}
};int main() {/*push_back 进去前 8~10 项左右、最后调用 gao 得第 n 项*/vector<int>v;v.push_back(3);v.push_back(9);v.push_back(20);v.push_back(46);v.push_back(106);v.push_back(244);v.push_back(560);v.push_back(1286);v.push_back(2956);v.push_back(6794);int nCase;scanf("%d", &nCase);while(nCase--){scanf("%lld", &n);printf("%lld\n",1LL * linear_seq::gao(v,n-1) % mod);}
}
View Code

 

转载于:https://www.cnblogs.com/LiHior/p/9667937.html

http://www.lbrq.cn/news/821611.html

相关文章:

  • 娄底网站优化/西安今日头条新闻
  • 创办一个网站要多少钱/宁波seo咨询
  • 做垃圾网站来干嘛/免费seo快速排名系统
  • 建设网站需要会什么/qq引流推广软件哪个好
  • 柳州市网站建设/百度应用市场下载安装
  • 网站做视频监控方案/长春网站制作企业
  • 企业数据查询网站/杭州seo托管公司推荐
  • 网站开发技术参考文献/网络推广网站推广方法
  • 网页设计类网站/郑州seo哪家专业
  • iis 访问网站需要进行身份验证/百度一下 你就知道官方
  • 高端品牌网站建设服务/靠谱的代写平台
  • 做塑胶原料用什么网站好/杭州关键词自动排名
  • 广州短视频网站开发/怎么在百度发布自己的文章
  • 浙江建站/百度官网链接
  • 网站建设合同 售后维护期/网站百度收录批量查询
  • 主题资源网站制作平台/百度宣传广告要多少钱
  • 域名申请成功后怎么做网站/什么叫优化关键词
  • 南阳千牛网站建设/广告平台网
  • 网站建设用到什么/推广软文怎么写
  • 新疆的网站建设有哪些/黑马培训价目表
  • 仙居网站建设贴吧/最新网络营销方式
  • wordpress导航特效/杭州百度快照优化公司
  • 福建省闽侯县建设局网站/全网优化推广
  • 企业网站建设需要提供什么内容/成都百度推广公司电话
  • 建网站需成本多少钱/百度推广联系人
  • 网站ui用什么做/郑州seo推广
  • 网站建设模板一次收费/茂名网络推广
  • 自贡移动网站建设/怎么做百度网页
  • 自动化发布 iis网站/百度股市行情上证指数
  • 网站建设优化是什么鬼/上海网站推广服务
  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • leetcode 1695. 删除子数组的最大得分 中等
  • Qt基本控件使用:按钮、标签、文本框等
  • react-window 大数据列表和表格数据渲染组件之虚拟滚动
  • Valgrind Cachegrind 全解析:用缓存效率,换系统流畅!
  • 【前端状态更新与异步协调完全指南:React、Vue架构原理与复杂业务场景实战】