• 多项式填坑。。?


    多项式填坑。。?

    大概就是填填坑了。

    多项式带余除法

    这东西啥啊。怎么还带翻转的。

    别指望我写推导,丢个代码块就跑。

    而且还是我美妙无比的多项式模板。(牛顿迭代自己(yy)循环写法的真的就我一个吗?)

    inline void Inv(int *A,int *B,int n){
    	B[0]=Pow(A[0],MOD-2);
    	for(RG int m=2;m<n<<1;m<<=1){
    		for(RG int i=0;i<m;++i) tmp[i]=B[i],B[i]=Plu(B[i],B[i]);
    		Mul_i(A,tmp,tmp,m);
    		for(RG int i=0;i<m<<1;++i) B[i]=Plu(B[i],MOD-tmp[i]);
    	}
    }
    inline void Mod(int *A,int *B,int *C,int *D,int n,int m){
    	reverse(A,A+n),reverse(B,B+m),Inv(B,C,n-m+1);
    	Mul(A,C,C,n),reverse(C,C+n-m+1),reverse(A,A+n),reverse(B,B+m);
    	for(RG int i=n-m+1;i<n;++i) C[i]=0;
    	Mul(B,C,D,m); for(RG int i=0;i<m;++i) D[i]=Plu(A[i],MOD-D[i]);
    }
    

    原柿子是(A=B*C+D),这里(ABCD)都是多项式。

    这个要注意每个多项式的长度,弄错挺麻烦的,如果(WA)了记得多调调数组长度。

    还有就是记得清空(C)数组的后面那一截。


    线性齐次常系数递推

    应该没打错名字

    同样是一波精妙无比的推导。你发现跟做快速幂一样就行了。

    先乘再模,其他就是快速幂。

    然而这种常数大到难以置信的(nlog^2n)已经没有救了。。。

    同样是要用到多项式取模,某些(DFT)是可以省掉的,然而我懒得改了。

    这种常数大大大大大大大的东西大概真的没救了。。。。

    int rem[N<<2],B[N<<2],C[N<<2];
    inline void Mod(int *A,int *D,int n,int m){
    	reverse(A,A+n),Mul(A,rem,C,n),reverse(C,C+n-m+1),reverse(A,A+n);
    	for(RG int i=n-m+1;i<n;++i) C[i]=0;
    	Mul(B,C,C,m); for(RG int i=0;i<m;++i) D[i]=Plu(A[i],MOD-C[i]);
    	for(RG int i=m;i<n;++i) D[i]=0;
    }
    inline void Powp(int K,int *ans,int *Bas,int y){
    	Bas[1]=1,ans[0]=1;
    	while(y){
    		if(y&1) Mul(ans,Bas,ans,K+K-1),Mod(ans,ans,K+K-1,K+1);
    		Mul(Bas,Bas,Bas,K+K-1),Mod(Bas,Bas,K+K-1,K+1),y>>=1;
    	}   return ;
    }
    

    记得预处理东西卡卡常啊。。。((BC)全局不变直接算出来)


    剩下的东西找时间再更。

  • 相关阅读:
    mySQL练习题
    JAVA实现C/S结构小程序
    JavaLinkedHashSet练习
    关于Extjs删除分页后删除最后一条数据页面无效的问题。
    hibernate 插入,更新数据库错误
    错误!错误!错误!
    坑爹的oracle
    关于hibernate实体类
    第一个项目的需求分析
    Ueditor 单独使用上传图片及上传附件方法
  • 原文地址:https://www.cnblogs.com/Lovemona/p/10447696.html
Copyright © 2020-2023  润新知