题目
这个卡特兰数式的生成函数一看就可以用整式递推。
上模板。
本来想骚操作一波往模板里带入 v e c t o r < i n t > ( f + 1 , f + . . . ) \mathrm{vector<int>(f+1,f+...)} vector<int>(f+1,f+...)的。
然后一直 W A WA WA,一度怀疑模板的正确率低下,后来才发现,原来我这波操作之后,
相当于数组被移位了。。。。。。所以整式递推的式子错误了。
所以带 v e c t o r < i n t > ( f , f + . . . ) \mathrm{vector<int>(f,f+...)} vector<int>(f,f+...)就行了,如果不想带入 0 0 0的话(比如这个题他没有说 f 0 = f_0= f0=几你也不好假定 f 0 = f_0= f0=几),你就在外面注意被移位了的处理即可。
A C C o d e \mathrm{AC \ Code} AC Code
#include<bits/stdc++.h>
#define maxn 10000007
#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)
#define per(i,j,k) for(int i=(j),LIM=(k);i>=LIM;i--)
#define St 13
#define LL long long
#define vc vector
#define vi vc<int>
#define Ct const
#define mod 1000000007
using namespace std;
int n,K,A,B,Q,f[maxn];
int Pow(int b,int k){
int r=1;for(;k;k>>=1,b=1ll*b*b%mod) if(k&1) r=1ll*r*b%mod; return r; }
vc<vi >PR(Ct vi&a,int D){
int N=a.size(),B=(N+2)/(D+2),C=(D+1)*B,R=N-(B-1),c=C,p;
vc<vi >b(R,vi(C));
rep(i,0,R-1) rep(j,0,B-1) for(int k=0,x=a[i+j];k<=D;k++,x=(LL)x*i%mod) b[i][j*(D+1)+k]=x;
rep(i,0