Dirichlet 前缀和的几种版本
【模板】Dirichlet 前缀和
求
\]
$ n \le 2\times 10^{7} $
看代码:
for( int i = 1 ; i <= en && pri[i] <= n ; ++ i ) {
for (int j = 1; j * pri[i] <= n; ++j) {
B[j * pri[i]] += B[j];
}
}
为啥这么做它是对的呢?发现每个数字会被它除以所有质因子转移到,并且是按照质因子从小到大来的。
所以这个代码相当于,对所有质因子递归求,然后对对所有质因子搞前缀和。
形式和 埃筛 一样,复杂度也是 $ O(n\log\log n) $
然后考虑这个
\]
看代码:
for( int i = 1 ; i <= en && pri[i] <= n ; ++ i ) {
for (int j = n / pri[i]; j; --j) {
B[j] += B[j * pri[i]];
}
}
首先,我们发现最主要的区别在于,我们应当从 一个数字本身 转移到 这个数字除以所有质因子。因为是从大到小转移的,所以也需要逆序枚举 $ j $ 。
最后考虑这个:
\]
也是已知 $ A $ 求 $ B $
这种情况其实就是第一种情况反过来,我们也可以直接把循环顺序和转移方法给反过来
for( int i = en ; i ; -- i ) {
for (int j = n / pri[i]; j ; -- j) {
B[j * pri[i]] -= B[j];
}
}
第二种情况也可以反过来,就不赘述了。
例题:CF585E
Dirichlet 前缀和的几种版本的更多相关文章
- 【转载】pygame安装与两种版本的Python兼容问题
在开始学习游戏编程之前,我们先来安装下pygame和python3.2.5 参考园友: http://www.cnblogs.com/hongten/p/hongten_pygame_install. ...
- Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件),可以兼容VRTK
Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件) 可以兼容V ...
- 转:狄利克雷过程(dirichlet process )的五种理解
狄利克雷过程(dirichlet process )的五种理解 原文:http://blog.csdn.net/xianlingmao/article/details/7342837 无参数贝叶 ...
- [SOJ #112]Dirichlet 前缀和
题目大意:给定一个长度为$n$的序列$a_n$,需要求出一个序列$b_n$,满足:$$b_k=\sum\limits_{i|k}a_i$$$n\leqslant10^7$ 题解:$\mathrm{Di ...
- 大整数四则运算(vector与数组两种版本实现)
每逢大整数四则运算,都会怯懦,虽是算法竞赛必会的东西,也零散的学过,简单的总结过,但不成体系的东西心里一直没底. 所以今天消耗了大量的卡路里,啃了几套模板之后终于总结成了一套自己的模板 再也不用担心大 ...
- [Swift]队列Queue的两种版本:(1)用类包装Queue (2)用泛型包装Queue
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的 ...
- Python的几种版本的不同实现
Python自身作为一门编程语言,它有多种实现.这里的实现指的是符合Python语言规范的Python解释程序以及标准库等.这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是 ...
- Java 的几种版本
1. Java ME Java ME(Java 2 Micro Edition),是为机顶盒.移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API. ...
- 手把手教你如何安装Tensorflow(Windows和Linux两种版本)
tensorflow 不支持Python2.7,最好选择下载Python3.5 现在越来越多的人工智能和机器学习以及深度学习,强化学习出现了,然后自己也对这个产生了点兴趣,特别的进行了一点点学习,就通 ...
随机推荐
- 改善深层神经网络-week1编程题(GradientChecking)
1. Gradient Checking 你被要求搭建一个Deep Learning model来检测欺诈,每当有人付款,你想知道是否该支付可能是欺诈,例如该用户的账户可能已经被黑客掉. 但是,反向传 ...
- Vue 报错Error in render: “TypeError: Cannot read properties of null (reading ‘xxx’)” found in
前端vue报错 [Vue warn]: Error in render: "TypeError: Cannot read properties of null (reading 'name' ...
- rabbitmq死信队列和延时队列的使用
死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange ...
- 安装pytorch的细节记录
1.根据教程安装pytorch的时候发现太慢了,无法容忍,根据https://blog.csdn.net/zzq060143/article/details/88042075z在Ancona Prom ...
- Qt坐标转换系统的理解
转 https://blog.csdn.net/hgcprg/article/details/53537106 今天又看了一篇对Qt坐标转换系统以及QTransform的博客,作者讲的非常透彻,链接如 ...
- 单片机STM32的启动文件详解--学习笔记
启动文件简介 启动文件由汇编编写,是系统上电复位后第一个执行的程序.主要做了以下工作: 1.初始化堆栈指针SP=_initial_sp 2.初始化PC 指针=Reset_Handler 3.初始化中断 ...
- 高并发场景下JVM调优实践之路
一.背景 2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验. 通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图: 可 ...
- SpringCloud微服务实战——搭建企业级开发框架(十一):集成OpenFeign用于微服务间调用
作为Spring Cloud的子项目之一,Spring Cloud OpenFeign以将OpenFeign集成到Spring Boot应用中的方式,为微服务架构下服务之间的调用提供了解决方案.首先, ...
- linux基本命令二
组管理与权限管理 文件/目录所有者 修改文件所有者 chown 用户名 文件名 创建文件所在组 groupadd 修改文件所在组 chgrp 组名 文件名 其他组:除文件的所有者和所在组的用 ...
- RedHat 7.0 Linux 下划分区,分区加密,配额,逻辑卷管理
1:如何划分区: 1:明确分区的对象:xxx :fdisk /dev/xxx 2:增加一个分区:n:选择主分区或者扩展分区,"p" or "e" :默认地方开始 ...