码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj4161: Shlw loves matrixI

时间:2018-08-20 20:38:17      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:sha   typedef   soft   mat   cto   bzoj   map   for   void   

传送门

多项式取模优化k阶常系数线性递推的模板

刚才的板子改了一下,wa了,,,先码这吧,下次再改。

技术分享图片
 1 //Achen
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<vector>
 7 #include<cstdio>
 8 #include<queue>
 9 #include<cmath>
10 #include<set>
11 #include<map>
12 #define Formylove return 0
13 #define For(i,a,b) for(int i=(a);i<=(b);i++)
14 #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
15 const int N=4007,p=1000000007;
16 typedef long long LL;
17 typedef double db;
18 using namespace std;
19 LL a[N],f[N],n,k;
20 
21 template<typename T>void read(T &x)  {
22     char ch=getchar(); x=0; T f=1;
23     while(ch!=-&&(ch<0||ch>9)) ch=getchar();
24     if(ch==-) f=-1,ch=getchar();
25     for(;ch>=0&&ch<=9;ch=getchar()) x=x*10+ch-0; x*=f;
26 }
27 
28 LL rs[N],bs[N];
29 void mul(LL a[],LL b[],LL c[]) {
30     static LL tp[N];
31     int up=(k<<1);
32     For(i,0,up) tp[i]=0;
33     For(i,0,k-1) For(j,0,k-1)
34         (tp[i+j]+=a[i]*b[j]%p)%=p; 
35     Rep(i,up,k) { 
36         For(j,1,k) (tp[i-j]+=f[j]*tp[i]%p)%=p;
37         tp[i]=0;
38     }
39     For(i,0,up) c[i]=tp[i]; 
40 }
41 
42 void ksm(LL b) {
43     while(b) {
44         if(b&1) mul(rs,bs,rs);
45         mul(bs,bs,bs);
46         b>>=1;    
47     }
48 }
49 
50 //#define ANS
51 int main() {
52 #ifdef ANS
53     freopen("shanghai.in","r",stdin);
54     freopen("shanghai.out","w",stdout);
55 #endif
56     read(n); read(k);
57     For(i,1,k) read(f[i]);
58     For(i,1,k) { read(a[i]); (a[i]+=p)%=p; }
59     if(n<k) { 
60         printf("%lld\n",a[n+1]); 
61         return 0;
62     }
63     rs[0]=1; bs[1]=1;
64     ksm(n);
65     LL ans=0;
66     For(i,0,k-1) (ans+=rs[i]*a[i+1]%p)%=p;
67     printf("%lld\n",ans);
68     Formylove;
69 }
View Code

 

bzoj4161: Shlw loves matrixI

标签:sha   typedef   soft   mat   cto   bzoj   map   for   void   

原文地址:https://www.cnblogs.com/Achenchen/p/9507826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!