【BZOJ4161】Shlw loves matrixI (常系数齐次线性递推)

题面

BZOJ

题解

\(k\)很小,可以直接暴力多项式乘法和取模。

然后就是常系数齐次线性递推那套理论了,戳这里

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define MOD 1000000007
#define MAX 5000
void add(int &x,int y){x+=y;if(x>=MOD)x-=MOD;}
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int fpow(int a,int b)
{
int s=1;if(a==1)return 1;
while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}
return s;
}
int n,k;
int tmp[MAX];
int a[MAX],h[MAX<<1];
void Multi(int *a,int *b,int n,int m,int *c)
{
for(int i=0;i<=n+m;++i)tmp[i]=0;
for(int i=0;i<=n;++i)
for(int j=0;j<=m;++j)
add(tmp[i+j],1ll*a[i]*b[j]%MOD);
for(int i=0;i<=n+m;++i)c[i]=tmp[i];
}
void Mod(int *a,int *b,int n,int m)
{
for(int i=n;i>=m;--i)
if(a[i])
{
int t=1ll*a[i]*fpow(b[m],MOD-2)%MOD;
for(int j=i;j>=i-m;--j)
add(a[j],MOD-1ll*t*b[m-i+j]%MOD);
}
}
int p[MAX],ans[MAX];
void Solve(int b,int *mod,int K,int *ans)
{
int s[MAX];memset(s,0,sizeof(s));s[1]=ans[0]=1;
while(b)
{
if(b&1)Multi(ans,s,K-1,K-1,ans),Mod(ans,p,K+K-2,K);
Multi(s,s,K-1,K-1,s);Mod(s,p,K+K-2,K);
b>>=1;
}
}
int main()
{
n=read();k=read();
for(int i=1;i<=k;++i)a[i]=(read()%MOD+MOD)%MOD;
for(int i=0;i<k;++i)h[i]=(read()%MOD+MOD)%MOD;
p[k]=1;for(int i=1;i<=k;++i)p[k-i]=(MOD-a[i])%MOD;
Solve(n-k,p,k,ans);int Ans=0;
for(int i=k;i<k+k;++i)
for(int j=1;j<=k;++j)
add(h[i],1ll*a[j]*h[i-j]%MOD);
for(int i=0;i<k;++i)add(Ans,1ll*h[i+k]*ans[i]%MOD);
printf("%d\n",Ans);
return 0;
}

【BZOJ4161】Shlw loves matrixI (常系数齐次线性递推)的更多相关文章

  1. bzoj 4161 Shlw loves matrixI——常系数线性齐次递推

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4161 还是不能理解矩阵…… 关于不用矩阵理解的方法:https://blog.csdn.ne ...

  2. 常系数齐次线性递推 & 拉格朗日插值

    常系数齐次线性递推 具体记在笔记本上了,以后可能补照片,这里稍微写一下,主要贴代码. 概述 形式: \[ h_n = a_1 h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k} \] ...

  3. 【Luogu4723】线性递推(常系数齐次线性递推)

    [Luogu4723]线性递推(常系数齐次线性递推) 题面 洛谷 题解 板子题QwQ,注意多项式除法那里每个多项式的系数,调了一天. #include<iostream> #include ...

  4. 【模板】BM + CH(线性递推式的求解,常系数齐次线性递推)

    这里所有的内容都将有关于一个线性递推: $f_{n} = \sum\limits_{i = 1}^{k} a_{i} * f_{n - i}$,其中$f_{0}, f_{1}, ... , f_{k ...

  5. 【瞎讲】 Cayley-Hamilton 常系数齐次线性递推式第n项的快速计算 (m=1e5,n=1e18)

    [背诵瞎讲] Cayley-Hamilton 常系数齐次线性递推式第n项的快速计算 (m=1e5,n=1e18) 看CSP看到一题"线性递推式",不会做,去问了问zsy怎么做,他并 ...

  6. BZOJ4161 常系数齐次线性递推

    问了数竞的毛毛搞了一番也没太明白,好在代码蛮好写先记下吧. #include<bits/stdc++.h> using namespace std; ,mod=1e9+; int n,k, ...

  7. Re.常系数齐次递推

    前言 嗯   我之前的不知道多少天看这个的时候到底在干什么呢 为什么那么..  可能大佬们太强的缘故 最后仔细想想思路那么的emmm 不说了  要落泪了 唔唔唔 前置 多项式求逆 多项式除法/取模 常 ...

  8. 【BZOJ4944】[NOI2017]泳池(线性常系数齐次递推,动态规划)

    [BZOJ4944][NOI2017]泳池(线性常系数齐次递推,动态规划) 首先恰好为\(k\)很不好算,变为至少或者至多计算然后考虑容斥. 如果是至少的话,我们依然很难处理最大面积这个东西.所以考虑 ...

  9. bzoj4161: Shlw loves matrixI

    Description 给定数列 {hn}前k项,其后每一项满足 hn = a1*h(n-1) + a2*h(n-2) + ... + ak*h(n-k) 其中 a1,a2...ak 为给定数列.请计 ...

随机推荐

  1. 使用odoo官方dockerfile 创建最新版镜像

    以odoo11.0为例 1.检出odoo/docker仓:git clone https://github.com/odoo/docker.git 2.打开目录 http://nightly.odoo ...

  2. WPF 模拟UI 键盘录入

    原文:WPF 模拟UI 键盘录入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/1835 ...

  3. .net core实践系列之短信服务-Sikiro.SMS.Bus服务的实现

    前言 前两篇<.net core实践系列之短信服务-Sikiro.SMS.Api服务的实现>.<.net core实践系列之短信服务-Api的SDK的实现与测试>分别讲解了AP ...

  4. Lustre文件系统部署和应用探索

    1. Lustre文件系统概述 2. Lustre文件系统部署 2.1 基本环境 本篇博客将在KVM虚拟机中部署Lustre文件系统. 操作系统版本为CentOS6.5_x86_64.Lustre软件 ...

  5. CSS 边框(border)实例

    CSS 边框(border)实例:元素的边框 (border) 是围绕元素内容和内边距的一条或多条线. CSS border 属性允许你规定元素边框的样式.宽度和颜色. CSS 边框属性属性 描述bo ...

  6. Centos下添加静态路由(临时和永久有效)的操作记录

    公司IDC机房服务器上部署了一套外网LB环境,默认配置的是外网ip的路由地址,由于要和其他内网机器通信,所以需要配置内网ip的路由地址.整个操作过程,记录如下,以供以后参考学习: 1)内网网卡绑定 [ ...

  7. cocoapod Podfile use frameworks swift/oc混编 could not build module xxx

    前置: 知名的pod: AFNetworking 我自己的pod:  AFNetworking+RX  3.1.0.18 里面有一段代码是: #import <Foundation/Founda ...

  8. 牛客第二场-J-farm-二维树状数组

    二维树状数组真的还挺神奇的,更新也很神奇,比如我要更新一个区域内的和,我们的更新操作是这样的 add(x1,y1,z); add(x2+1,y2+1,z); add(x1,y2+1,-z); add( ...

  9. 作业20171116 beta2及beta发布 成绩

    申诉 对成绩有疑问或不同意见的同学,请在群里[@杨贵福]. 申诉时间截止2017年12月13日 17:00. 成绩 scrum01 scrum02 scrum03 scrum04 scrum05 sc ...

  10. 【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(C语言)

    本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 本次作业代码的github地址:https://gith ...