[BZOJ3992] [SDOI2015] [NTT] 序列统计

如何用ggplot2绘制专业级双侧柱状图展示GO富集结果(附完整代码) 本文详细介绍了如何使用R语言的ggplot2包绘制专业级双侧柱状图展示GO富集结果,包括数据预处理、基础图形构建、高级样式定制和出版级细节调整。通过完整的代码示例和实用技巧,帮助生物信息学研究人员高效可视化高通量数据,提升学术图表的质量和可读性。 阅读详情

先写出DP方程
f(i,j)表示放了i个数,乘积模m为j的方案数
那么f(i,j)=∑ab=j,a∈S,b∈Sf(i−1,a)∗f(f−1,b)
这个可以用矩阵+快速幂优化 但是不够优
发现模数比较特别,如果可以把乘号变成加号,就可以用NTT+快速幂来做
用m的原根g把每个数表示成gi就可以啦

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

const int N=8010<<3,P=1004535809,G=3;

inline char nc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}

inline void rea(int &x){
    char c=nc(); x=0;
    for(;c>'9'||c<'0';c=nc());for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc());
}

int n,m,x,s,g;
int a[N],numb[N];

inline bool prim(int x){
    static int vis[N];
    for(int i=0;i<m;i++) vis[i]=0;
    for(int i=1,prod=x;i<m;i++,prod=1LL*prod*x%m)
        if(vis[prod]) return false;
        else vis[prod]=1;
    return g=x;
}

int _x[N],rev[N],w[2][N];
int num,L,M;

inline int Pow(int x,int y){
    int ret=1;
    for(;y;y>>=1,x=1LL*x*x%P)
        if(y&1) ret=1LL*ret*x%P;
    return ret;
}

inline void Pre(int n){
    num=n;
    int g=Pow(G,(P-1)/num),invg=Pow(g,P-2);
    w[0][0]=w[1][0]=1;
    for(int i=1;i<num;i++)
        w[0][i]=1LL*w[0][i-1]*invg%P,w[1][i]=1LL*w[1][i-1]*g%P;
}

inline void NTT(int *a,int n,int r){
    for(int i=1;i<n;i++) if(rev[i]>i) swap(a[rev[i]],a[i]);
    for(int i=1;i<n;i<<=1)
        for(int j=0;j<n;j+=(i<<1))
            for(int k=0;k<i;k++){
                int x=a[j+k],y=1LL*a[j+k+i]*w[r][num/(i<<1)*k]%P;
                a[j+k]=(x+y)%P; a[j+k+i]=(x+P-y)%P;
            }
    if(!r) for(int i=0,inv=Pow(n,P-2);i<n;i++) a[i]=1LL*a[i]*inv%P;
}

inline void mul(int *a,int *b){
    static int tmp[N];
    for(int i=0;i<m-1;i++) tmp[i]=b[i];
    NTT(a,M<<1,1); NTT(tmp,M<<1,1); 
    for(int i=0;i<(M<<1);i++) a[i]=1LL*a[i]*tmp[i]%P;
    NTT(a,M<<1,0);
    for(int i=0;i<m-1;i++) (a[i]+=a[i+m-1])%=P;
    for(int i=m-1;i<(M<<1);i++) a[i]=tmp[i]=0;
}

inline int *Pow(int *x,int y){
    int *ret=_x; ret[0]=1;
    for(;y;y>>=1,mul(x,x))
        if(y&1) mul(ret,x);
    return ret;
}

int main(){
    rea(n); rea(m); rea(x); rea(s);
    M=1; for(;M<=(m<<1);M<<=1); Pre(M<<1);
    L=0; while(!(M>>L&1)) L++;
    for(int i=1;i<(M<<1);i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<L);
    for(int i=2;i<m;i++)
        if(prim(i)) break;
    for(int i=1,prod=g;i<m-1;i++,prod=1LL*prod*g%m) numb[prod]=i;
    for(int i=1;i<=s;i++){
        int x; rea(x); 
        if(!x) continue;
        a[numb[x%m]]++;
    }
    printf("%d\n",Pow(a,n)[numb[x]]);
    return 0;
}
S32DS3.5图形化配置实战:从零构建S32K144通信接口工程 本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。 阅读详情

相关推荐

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

bzoj3992 [SDOI2015]序列统计(NTT快速幂)

bzoj3992 [SDOI2015]序列统计 原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3992 题意: 小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S。 小C用这个生成器生成了许多这样的数列。但是小C有一个问题需要你的帮助:给定整数x,

Bfk的博客 461

从零开始:使用Mask2Former训练你的专属数据集

本文详细介绍了如何从零开始使用Mask2Former训练自定义数据集。内容涵盖环境搭建、数据准备(将LabelMe格式转换为COCO格式)、数据集注册与模型配置、训练启动与调试,以及最终的模型推理与应用。通过实战步骤和常见问题解决方案,帮助读者掌握使用Mask2Former进行实例分割的核心流程,实现专属模型的训练与部署。

weixin_28678151的博客 444

【BZOJ3992】[SDOI2015]序列统计 NTT+多项式快速幂

【BZOJ3992】[SDOI2015]序列统计 Description 小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S。 小C用这个生成器生成了许多这样的数列。但是小C有一个问题需要你的帮助:给定整数x,求所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有多少个。小C认为...

weixin_30349597的博客 83

深入解析FastDDS:SHM与DATA-SHARING传输层的性能对比与实现细节

本文深入对比了FastDDS中SHM与DATA-SHARING两种传输层的实现机制与性能差异。SHM采用端口化共享内存模型,存在两次数据拷贝;而DATA-SHARING通过共享历史实现真正的零拷贝,大幅降低延迟与CPU占用。文章结合实战测试数据,为机器人、自动驾驶等高实时性场景提供了关键的性能优化选型与配置指南。

weixin_28358083的博客 231

Linux服务器上后台运行jupyter notebook/Lab

1 安装配置教程2 后台运行jupyter3 更改运行环境kernel4 SSH端口转发 1 安装配置教程 可以参考:https://www.cnblogs.com/thousfeet/p/10647102.html 2 后台运行jupyter screen -S jupyter # 新建一个名为jupyter的后台screen # 在base环境下,先 cd 到指定文件目录 jupyter notebook # or jupyter lab 3 更改运行环境kernel 需要手动为每个环境添加内.

strivequeen的博客 1834

BZOJ3992: [SDOI2015]序列统计【NTT+原根+DP】

3992: [SDOI2015]序列统计 【题目描述】 传送门 【题解】 我们可以写出DP式,F[i][j∗a[k]]+=F[i−1][j]F[i][j*a[k]]+=F[i-1][j]F[i][j∗a[k]]+=F[i−1][j] 初始状态F[0][0]=1F[0][0]=1F[0][0]=1 对于上式我们很难处理,如果我们可以将相乘改成相加,就可以套NTT了。 我们设ggg为mod m意义下的...

XSamsara的博客 AFO 290

WorkBuddy KiCad 实战:国产 AI 搭子不只会写代码,传感器板从零走到可审查

真正可用的 PCB 教程不能承诺“一键打样”。本课把 WorkBuddy 放在需求拆分、文件生成和审查记录的位置,KiCad 负责 ERC、DRC 与制造文件,工程师负责最终判断。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、KiCad 8.0、Python 3.11 与人工审阅组成一条可复现链路。你会从“已确认的接口表、器件库来源、板框与电源方案”出发,得到“KiCad 工程、原理图、初始 BOM、ERC 报告与审查记录”,并学会用真实命令、错误信号和停止条件判断成果能不能进入下一阶

yueyeguzhuo的专栏 205

bzoj 3992 [SDOI2015]序列统计 NTT

题面 题目传送门 解法 先考虑一个最简单的dp:令f[i][j]f[i][j]f[i][j]表示前iii个数的乘积对mmm取模为jjj的方案数,转移比较简单,在这里就不写了。 但是我们会发现,转移的时候是乘法,并没有特别好的优化方式。 注意mmm是一个质数,一定存在原根ggg。那么,我们就可以用ggg的若干次方表示出[1,m)[1,m)[1,m)中的所有数。 现在我们不妨对原来的状态稍作修改,f...

mysterynoip的博客 290

slew dreate,slew threshold与transition计算

​只看rise情况下,from pin取slew threshold10%-90%的区间,slew derate为1,计算得到transition为1.002e-10,to pin的slew threshold 为30%-70%,slew derate 0.5,从波形列表上取相近的值3.75e-10和8.75e-10,计算得到transition为(8.75e-10-3.75e-10)/0.5=1e-9,考虑精度和取值区间问题,基本符合工具计算的值,如下:​。如下示例,在.lib库中有定义以下内容。

m0_61544122的博客 792

Autosar 下电过程-基于ETAS工具

本文介绍基于ETAS工具对应的BIP包的下电过程,仅供参考。在最后调用SBC下电时,需要理清楚SBC的休眠流程,否则可能会出现休眠又唤醒情况。后面有空会介绍9471的休眠流程。

赞的博客 810

BZOJ 3992 [SDOI2015]序列统计 NTT

BZOJ 3992 [SDOI2015]序列统计 NTT

-Claude 2024

7.DJI-PSDK:psdk负载应用固件升级(基于RTOS)

在单片机应用程序开发阶段,我们可以借助keil5和J-LINK来直接下载应用程序进行开发和调试, 但在产品交付之后,我们对应用程序做了改动和升级,是断然不可能采用这种方式的,我们应该将新版本的程序固件打包发给客户, 能够方便用户通过DJI Assistant2选择更新负载设备的固件,导入本地固件程序包,更新负载设备。使用STM32F4 开发的负载设备从Flash 中直接读取固件文件并运行负载设备程序,因此开发者需先烧录Bootloader 再烧录应用固件,烧录Bootloader 的步骤不再赘述。

哒宰的博客 673

bzoj3992: [SDOI2015]序列统计 NTT+快速幂

第一次自己切NTT,感觉NTT就是FFT的取模版本,具体可以看 http://blog.youkuaiyun.com/acdreamers/article/details/39026505 讲得很清楚 然后系数本来是可以 预处理出来,时间可以缩很多,但我为了模板的简洁还是在想求系数了。 说了那么多废话,下面我们进入正题:题目最简单的dp可以设做dp[i][j]:前i位积mod m 为j的方案数。由于乘法再

IED98的专栏 3362

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【BZOJ3992/SDOI2015】序列统计 NTT

原题走这里 一道非常奇妙的题,操作十分神奇。 首先原题中的式子是 a1a2a3...a|S|≡p(modm),ai∈Sa1a2a3...a|S|≡p(modm),ai∈Sa_1a_2a_3...a_{|S|}\equiv p (mod m) , a_i\in S 然而乘法是没有办法直接做FFT的,所以我们要把式子中的连乘改为连加 也就是说,给上面式子“取对数” 求出m的原根g,将上述式子...

CRTorlonia的博客 298

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

bzoj 3992: [SDOI2015]序列统计 NTT

题意小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S。 小C用这个生成器生成了许多这样的数列。但是小C有一个问题需要你的帮助:给定整数x,求所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有多少个。小C认为,两个数列{Ai}和{Bi}不同,当且仅当至少存在一个整数i,满足Ai≠Bi。另

beginend 570

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[bzoj3992][SDOI2015]序列统计——离散对数+NTT

题目大意: 给定一个数字不超过mmm的集合SSS,用SSS中的数生成一个长度为nnn的序列,求所有序列中的元素乘积模mmm等于xxx的序列的个数。 思路: 考虑最朴素的DPDPDP,设fi,jf_{i,j}fi,j​为选了iii个数,乘积模mmm余jjj的方案数,直接转移的时间复杂度是O(nm2)O(nm^2)O(nm2)的。 不难发现每次转移的过程是相同的,矩阵加速显然不太可行,考虑将乘法形式的...

ylsoi的博客 244

bzoj 3992: [SDOI2015]序列统计 NTT+原根

今天开始学习丧心病狂的多项式qaq...... . code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; int qpow(int x,int y,int m...

EM LGH 129

【NTT】bzoj3992: [SDOI2015]序列统计

板子题都差点不会了 Description 小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数列生成器,可以生成一个长度为N的数 列,数列中的每个数都属于集合S。小C用这个生成器生成了许多这样的数列。但是小C有一个问题需要你的帮助: 给定整数x,求所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有多少个。小C认为 ,两个数列...

weixin_30784945的博客 67

【SDOI2015】BZOJ3992 序列统计题解(DP+原根+NTT)

题目:BZOJ3992. 题目大意:给定集合SSS,求数列aia_iai​的数量,其中∏i=1nai≡x&amp;amp;ThinSpace;&amp;amp;ThinSpace;(mod&amp;amp;ThinSpace;&amp;amp;ThinSpace;m)\prod_{i=1}^{n}a_i\equiv x\,\,(mod\,\,m)∏i=1n​ai​≡x(modm). 1≤m≤8000,1≤n≤109,1≤x≤m1...

hzk_cpp的博客 279

【 bzoj 3992 】 [SDOI2015]序列统计 - NTT 生成函数

看起来很厉害的题   然而想到原根的话这题就成sb题了   因为模M为质数,所以一定存在原根,所以[0,M−2][0,M-2]内可以建立与[1,M−1][1,M-1]一一对应的关系。通过原根就可以把原本的乘法变成了指数上的加法。   然后因为它是个数列,很容易想到,也很显然地,可以构造这个数列的生成函数,xix^i的系数表示对应项为i的时候的方案数。   总之后面就是很水了,就是个快

GEOTCBRL 1087

[BZOJ3992][SDOI2015]序列统计(NTT+DP+ksm)

题目: 我是超链接 题解: 从简单开始吧。 首先我们假设题目让求的是“数列中所有数的【和】%mod=x的不同方案数” 那么设F[i][j]表示选择i个数%mod=j的方案数 转移方程F[i][j]=∑|S|k=1F[i−1][j−Sk]F[i][j]=∑k=1|S|F[i−1][j−Sk]F[i][j]=\sum_{k=1}^{|S|}F[i-1][j-S_k] 这个形式我们可以转化...

薇小薇 291

BZOJ 3992: [SDOI2015]序列统计(NTT+快速幂+DP)

快速数论变换NTT 求原根 LL大法好

Ab.Ever 509

【BZOJ3992】【SDOI2015】序列统计 原根 NTT

题目大意   有一个集合\(s\),里面的每个数都\(\geq0\)且\(<m\)。   问有多少个长度为\(n\)的数列满足这个数列所有数的乘积模\(m\)为\(x\)。答案模\(1004535809\)。   \(n\leq {10}^9,m\leq 8000\)且\(m\)是质数。 题解   先求出\(m\)的原根\(g\),这样\(1\)~\(m-1\)中的每个数都能被表示成\(g\...

weixin_30537451的博客 115
上一篇: [51nod 1258] [伯努利数] [多项式求逆] [任意模数NTT] 序列求和 V4
下一篇: [ BZOJ3572 ] [ Hnoi2014 ] [ 虚树 ] [ 树形DP ] 世界树
LowestJN
博客等级 码龄10年 76粉丝 422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值