首页 > 其他分享 >循环卷积

循环卷积

时间:2023-09-20 22:22:23浏览次数:50  
标签:le log 卷积 循环 mod operatorname equiv

P3321 [SDOI2015] 序列统计

问有多少个值域为 \([0,m-1]\) 的序列 \(A\) 满足 \(\prod_{i=1}^{n}A_i\equiv x(\operatorname{mod}m)\).

答案对 \(1004535809\) 取模。

\(1\le n\le 10^9\),\(3\le m\le 8000\),\(1\le x<m\).

保证 \(m\) 为质数。

最朴素的卷积显然是

\[f_{2i,c}=\sum_{ab\equiv c(\operatorname{mod}m)}f_{i,a}\cdot f_{i,b} \]

时间复杂度 \(O(m^2\log n)\).

看到 \(1004535809\) 不难想到要进行一些操作。

不妨取对数,那么 \(a+b\equiv c(\operatorname{mod}m)\).

故可以将一个数 \(a\leftarrow \log_3a(\operatorname{mod}m)\).

那么

\[f_{2i,c}=\sum_{a+b\equiv c(\operatorname{mod}m)}f_{i,a}\cdot f_{i,b} \]

把 \(0\sim 2m-1\) 放进去卷积即可。时间复杂度 \(O(m\log m\log n)\).

枚举 \(g^k\) 可以得到 \(g^k\rightarrow k\) 的映射。

标签:le,log,卷积,循环,mod,operatorname,equiv
From: https://www.cnblogs.com/SError0819/p/17718607.html

相关文章

  • 可分离卷积(Separable Convolution)等价转换为传统卷积(Ordinary convolution)的方法,
    写在前面:可分离卷积提出的原因  卷积神经网络在图像处理中的地位已然毋庸置疑。卷积运算具备强大的特征提取能力、相比全连接又消耗更少的参数,应用在图像这样的二维结构数据中有着先天优势。然而受限于目前移动端设备硬件条件,显著降低神经网络的运算量依旧是网络结构优化的目......
  • for循环
    for循环的格式别和while循环给搞混了(个人有时候脑子发昏会在for循环里只写一个循环条件)for(i=0;i<9;i++)这种idea有for循环的快捷生成方式,若要生成100次for循环直接写100.for就会自动生成while就while(循环条件)for(;;)这样写就是个死循环暂时就这么多还有个打印9*9乘法表......
  • 循环删除 List 中的元素
    一、背景一个需求的技术点,需要循环删除List中的元素二、实现怎么删除List中姓李的人?publicList<String>initList=Arrays.asList("张三","李四","周一","刘四","李强","李白");1、普通for循环删除(不可靠)点击查看代码@Testpublicvoidremove1()......
  • Vue-js循环方式、v-model的使用、事件处理、表单控制、购物车案例
    js循环方式在es6语法中:(以后尽量少用var有很多坑)-let:定义变量-const:定义常量1.方式一:for循环,基于索引的循环<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc=".......
  • Vue之js循环方式、v-model 的使用、事件处理、表单控制、购物车案例、v-model修饰符
    js循环方式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>js循环方式</title><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></sc......
  • js循环方式、v-model、事件处理、表单控制、购物车案例
    js循环方式js循环for(),基于索引的循环let:es6语法,用于定义变量const:用于定义常量var以后尽量少用、for循环写法一: for循环写法二: 列表循环 循环方式二:in循环基于迭代的循环,依赖于索引取值直接console.log是索引值,只有list[i]才是要取的值 循环方式三:of循环......
  • Java(day17):Java 的循环退出语句 break、continue
    在Java中,循环是一种重要的控制流结构,它允许程序重复执行某段代码,直到满足特定的条件为止。但在某些情况下,我们可能需要在循环中提前退出或跳过某些迭代。这时我们可以使用Java中的两个循环控制语句:break和continue。break语句break语句用于完全退出当前所在的循环,不再执行循环中......
  • 《动手学深度学习 Pytorch版》 6.6 卷积神经网络
    importtorchfromtorchimportnnfromd2limporttorchasd2l6.6.1LeNetLetNet-5由两个部分组成:-卷积编码器:由两个卷积核组成。-全连接层稠密块:由三个全连接层组成。模型结构如下流程图(每个卷积块由一个卷积层、一个sigmoid激活函数和平均汇聚层组成):全连接......
  • 59-嵌套循环练习-九九乘法表-打印表格数据
        打印上半截,靠右对齐,目前没实现      ......
  • Java(day16):do-while循环语句
    前言循环是编程中的重要概念,可以让程序执行特定的代码块多次。Java语言提供了多种循环语句,其中最常用的是for和while循环语句。本文将介绍for和while循环语句的基本用法,并提供代码示例和测试用例。摘要本文将涵盖以下内容:for循环语句的语法和用法while循环语句的语法和用法......