Codechef JADUGAR 2 Chef and Same Old Recurrence 2(整式递推)

博客讲述了在解决Codechef的JADUGAR问题时,如何利用整式递推方法。作者在尝试使用模板时遇到了数组移位的问题导致WA,最终修正后AC。还提到在特定情况下,exgcd求逆元可以在极限时间内帮助解决问题。
摘要由CSDN通过智能技术生成

题目
这个卡特兰数式的生成函数一看就可以用整式递推。
上模板。
本来想骚操作一波往模板里带入 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值