模板记录

NTT:

namespace NTT {
    int n,m,l,r[N];
    void NTT(int *a,int f) {
        for(int i=0;i<n;i++) if(i<r[i]) swap(a[i],a[r[i]]);
        for(int i=1;i<n;i<<=1) {
            int wn=q_pow(pr,phi/(i<<1));
            if(f==-1) wn=q_pow(wn,mod-2);
            for(int p=i<<1,j=0;j<n;j+=p) {
                int w=1;
                for(int k=0;k<i;k++,w=1ll*w*wn%mod) {
                    int x=a[j+k],y=1ll*w*a[j+k+i]%mod;
                    a[j+k]=(x+y)%mod;a[j+k+i]=(x-y+mod)%mod;
                }
            }
        }
        if(f==-1) {
            int inv=q_pow(n,mod-2);
            for(int i=0;i<=n;i++) a[i]=1ll*a[i]*inv%mod;
        }
    }
    int calc(int *a,int *b,int _n,int _m,int type) {//type==2是多项式求逆时用的
        n=_n,m=_m,l=0;
        m+=n;for(n=1;n<=m;n<<=1) l++;
        for(int i=0;i<n;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
        NTT(a,1);NTT(b,1);
        for(int i=0;i<=n;i++) {
            if(type==1) a[i]=1ll*a[i]*b[i]%mod;
            else a[i]=1ll*a[i]*b[i]%mod*b[i]%mod;
        }
        NTT(a,-1);return n;
    }
}

分治NTT:

void cdq(int l,int r) {
    if(l==r) {
        f[l]=((1ll*q_pow(2,1ll*l*(l-1)/2)*q_pow(fac[l-1],mod-2)%mod-f[l])%mod+mod)%mod;//具体视题目推出的式子而定,这里是bzoj3456城市规划的代码
        return;
    }
    int mid=(l+r)>>1;
    cdq(l,mid);
    for(int i=0;i<=mid-l;i++) a[i]=f[i+l];
    for(int i=0;i<=r-l;i++) b[i]=g[i];
    int tmp=NTT::calc(a,b,mid-l,r-l);
    for(int i=mid+1-l;i<=r-l;i++) f[i+l]=(f[i+l]+a[i])%mod;
    for(int i=0;i<=tmp;i++) a[i]=b[i]=0;
    cdq(mid+1,r);
}

多项式求逆:

void Inv(int *f,int *g,int len) {
    if(len==1) {
        g[0]=q_pow(f[0],mod-2);
        return;
    }
    Inv(f,g,len>>1);
    for(int i=0;i<len;i++) a[i]=f[i],b[i]=g[i];
    int tmp=NTT::calc(a,b,len-1,len-1,2);
    for(int i=0;i<len;i++) g[i]=((-a[i]+2*g[i])%mod+mod)%mod;
    for(int i=0;i<=tmp;i++) a[i]=b[i]=0;
}

多项式开根:

不会,留坑

原文地址:https://www.cnblogs.com/gczdajuruo/p/8455771.html

时间: 2024-08-04 07:32:59

模板记录的相关文章

最大流EK算法模板

最近学了下最大流算法,大概思想算是懵懵懂懂了,现在想把模板记录下来,以备后面深刻学习之用. 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 5 #define _clr(x, y) memset(x, y, sizeof (x)) 6 #define Min(x, y) (x < y ? x : y) 7 #define INF 0x3f3f3f3f 8 #define N 210 9 10 in

模板解析变量理解

Discuz! 的模板采用近似 PHP 表达式的语法,支持的元素如下: <!--{ ... }--> 逻辑元素包围符,该符号用于包含条件和循环元素 条件判断 <!--{if expr1}--> statement1 <!--{elseif expr2}--> statement2 <!--{else}--> statement3 <!--{/if}--> 这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否

(模板)hdoj5977 Garden of Eden(点分治)

题目链接:https://vjudge.net/problem/HDU-5977 题意:给一颗树,每个结点上有一个权值a[i],a[i]<=10,求有多少条路径满足这条路径上所有权值的结点都出现了. 思路: 首先利用二进制的思想,将a[i]转化为1<<(a[i]-1).我们在子树中,计算出结点到重心的路径,用二进制表示,比如011表示该路径中权值3没有出现.权值1和2出现.因为k最大为10,那么我们在计算结果时把所有可能枚举一遍,也就1024,如果枚举的i和当前路径取或后=(1<&

构造批量测试数据

批量构造数据常见于性能测试中,大多数功能测试也会用到.不同的构造方法效率不同,下面是利用awk方法进行批量数据构造,效率较高. awk批量数据创建 $ awk -v data_format='136%03d|100|99\n' 'BEGIN{for(i=0;i<=3;i++)printf(data_format,i)}' 136000|100|99 136001|100|99 136002|100|99 136003|100|99 说明: 1.data_format值表示数据模板记录,%0d表示

仅仅恨时间太细,指缝太宽——半年总结

时间宛如指缝间的细沙,在不经意间就流逝.此时的我不再年轻.心态已经变老,我知道以后还有非常多的事等着我,仅仅是时间过的太快,不容我去适应. 我感慨着时间的无情.岁月的老去,青春的无奈. 光阴似箭,岁月蹉跎-- 回首,留在脑子的知识究竟有多少. 看着以前的自己做的满满的笔记,现在是如此的陌生.更可笑的是.自己在百度中搜索的答案.竟是自己以前 写的一篇博客.熟悉而又陌生. 以前一个寒假的请假,错过了米老师每一节精彩的讲课,未參与提高班每个非凡的瞬间,我已被冷冷地遗忘在某个角落--我大声地呐喊,努力的

iptables基本知识

防火墙可分为 网络防火墙 主机防火墙 大致定义:工作在网络或主机边缘,对于进出的报文,根据事先定义好的规则做检查,将那些能够匹配到的报文做出相应处理的组件.组件既可以是硬件也可以是软件. Iptables是应用程序 Iptables:编写规则的工具(检查语法送往netfilter) Netfilter:网络过滤器,内核中工作在TCP/IP网络协议栈上的框架.工作在内核中的框架,真正起到防范功能作用的 PS:要防火的关键是规则,而不是这些组件,组件根据规则来进行工作 路由发生时刻: 1. 报文进入

iptables状态检测

iptables状态检测 iptables状态检测是一种扩展匹配中的显式扩展,用于检测会话之间的连接关系的,有了检测我们可以实现会话间功能的扩展 什么是状态检测? 每个建立的连接包括以下信息:源IP地址.目标IP地址.源端口和目的端口,这叫一对套接字对(socket ); 协议类型.连接状态(TCP协议)和超时时间等信息.防火墙把这些信息叫作状态(stateful),能够检测每个连接状态的防火墙叫作带状态检测的包过滤防火墙:它除了能够完成简单包过滤防火墙的包过滤工作外,还在自己的内存中维护一个跟

防火墙及netfilter基础iptables基本用法

iptables firewall: 主机防火墙 网络防火墙 工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件. 网络防火墙: 专业的硬件防火墙: checkpoint,netscreen 主机: iptables: 程序 iptables:规则编写工具 netfilter: 网络过滤器, 内核中工作在TCP/IP网络协议栈上的框架: IDS:IntrusionDetecting System NIDS HIDS IPS:Intru

linux防火墙iptables

iptables firewall: 主机防火墙 网络防火墙 工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件. 网络防火墙: 专业的硬件防火墙: checkpoint,netscreen 主机: iptables: 程序 iptables:规则编写工具 netfilter: 网络过滤器, 内核中工作在TCP/IP网络协议栈上的框架: hooks function: prerouting: 进入本机后路由功能发生之前 input:到