【洛谷P5495】Dirichlet前缀和

什么是Dirichlet分布? Dirichlet分布是一种概率分布,用于描述多维随机变量的概率分布。它是一个连续分布,通常用于处理具有多种可能取值的离散型随机变量。在LDA模型中,Dirichlet分布通常被用作先验分布,用来表示主题的概率分布和单词的概率分布。,在LDA模型中常被视为一个超参数,控制着生成模型中未知参数的分布,影响模型的结果和效果。根据 Dirichlet 分布的性质,越大,对应的主题分布或单词分布越平滑,相反,表示 gamma 函数,通常表示成。越小,分布的区分度也越高。 阅读详情

Dirichlet前缀和


题目描述

在这里插入图片描述

输入格式

为了避免过大的输入,本体的输入使用随机数生成器。
输入中只有一行两个整数n,s。其中s为32位无符号整数,用来生成数据。
接下来,你要调用n次随机数生成器,分别生成a1a_1a1​~ana_nan​。

输出格式

为了避免过大的输出,你只需要输出一个32位无符号整数,表示所有bib_ibi​的异或和。

输入样例

5 1477

输出样例

2608816472

说明/提示

样例中
数列 a 为 397153977, 974453892, 352446086, 334987182, 2086335567。
数列b为397153977,1371607869,749600063,1706595051,2483489544。

解题思路

首先我们要将所有的质数筛选出来,可是数据太大,用普通的容易超时,所以我们就要考虑使用欧拉筛。
将所有的质数筛出来后,我们在求出每个数的约数,然后将有贡献的挑选出来。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define uint unsigned int
using namespace std;
uint s,n,number,p[20000010],a[20000010],veed[20000010],cont;
inline uint getnext()//随机数生成器
{
	s^=s<<13;
	s^=s>>17;
	s^=s<<5;
	return s;
}
void olash()//欧拉筛
{
	for(uint i=2; i<=n; i++)
	{
		if(!veed[i])
		 p[++cont]=i;
		for(uint j=1; i*p[j]<=n&&j<=cont; j++)
		{
			veed[i*p[j]]=1;
			if(i%p[j]==0)
				break;
		}
	}
}
int main()
{
	uint i,j;
	cin>>n>>s;
	for(i=1;i<=n;i++)
	 a[i]=getnext();
	olash();
	for(i=1;i<=cont;i++)
	 for(j=1;j*p[i]<=n;j++)
	  a[j*p[i]]+=a[j];
	for(i=1;i<=n;i++)
	 number^=a[i];//求异或和
	cout<<number;
	return 0;
}


谢谢阅读

Dirichlet前缀和及其拓展 整理的算法模板合集: ACM模板 目录DirichletDirichletDirichlet 前缀和DirichletDirichletDirichlet 后缀和倒推 DirichletDirichletDirichlet 前缀和倒推 DirichletDirichletDirichlet 后缀和 DirichletDirichletDirichlet 前缀和 题目传送门 题目大意: 给定一个长度为 nnn 的数列 a1,a2,a3,…,ana_1,a_2,a_3,\dots,a_na1​,a2​,a3​ 阅读详情

相关推荐

积性函数前缀和求和的方法

将近一周的时间内,我专门学习了数论中有关积性函数求前缀和的一些方法,在被虐心的数论折磨得痛不欲生之后(然而我明明已经逃离了数学系为什么还要被数学虐啊摔!!),我终于基本掌握了这一方法,所以在这里记录一下基本的思想并放上一些题解,以便日后回顾。 一、基本知识 1.积性函数   积性函数是指这样一类数论函数,对于∀a,b∈N ∗  \forall a,b\in{N}^{*}且gcd(a,

qkhhsuhrtfk的博客 2660

Dirichlet 前缀和

用倍数法进行贡献,时间复杂度为 O(nlog⁡n)O(nlogn),更具体地这个 log⁡log 是 ln⁡ln,这样的复杂度可以拿到 8080 分。所以我们考虑以唯一分解定理为基础,进行高维前缀和的处理,从而做到优化时间复杂度的目的。因而,我们可以对于每一个素数开一维数组,处理高维前缀和——就如同二维、三维前缀和一般。类似于埃氏筛的时间复杂度证明,这份代码的时间复杂度为 O(nlog⁡log⁡n)O(nloglogn)。首先将素数用 O(n)O(n) 的欧拉筛筛出来,然后处理每个素数的贡献。

dingjiapeng1234的博客 465

莫比乌斯与积性函数

莫比乌斯与积性函数 之前做过不少的数论题,关于莫比乌斯与积性函数的数论题挺多的。。。特地过来总结一下。。当作自己的一个回顾了-_-先安利一下神犇tls的博客和神犇PoPoQQQ的pdf ! 膜拜tls… 跪popoqqq… 还有IOI金牌神犇任之州的集训队论文,都是好文啊!需要先知道线性筛这个东西。。 orz… 线性筛的思想是每个合数都只会被它最小的质因数筛去,通过线性筛,我们可以O(n)得

我的ACM,我的梦!!! 4144

Dirichlet学习笔记

狄利克雷前缀和是求解形如bk​i∣k∑​ai​的式子首先我们可以想到枚举i,再枚举i的倍数jbj​bj​ai​此时的时间复杂度为n/1n/2n/3...n/1。由于调和级数,时间复杂度为Onlogn进一步分析式子,我们可以发现一个较大的bk​可以分解为几个bk的因子​相加,例如b8​a1​a2​a3​a4​a8​b4​a1​a2​a3​a4​。

muzqingt的博客 249

随机数生成

(本文图片来自于网络搜索,和部分地图软件截图,如有侵权,联系本人删除) 简而言之: 最近做了个matlab程序,解决以下几个问题。 1、利用蒙特拉罗方法生成满足任意给定概率密度函数发f(x)f(x)f(x)的随机数(1维)。(程序1,写成子程序) 2、进一步,生成满足任意给定二维概率密度函数 f(x,y)f(x,y)f(x,y)的分布的随机数。(程序2,可执行文件) 3、如果不知道二维概...

三石的后花园 2360

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码)

本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。

weixin_26905487的博客 443

【洛谷 P5495】【数学】Dirichlet 前缀和

【洛谷 P5495】【数学】Dirichlet 前缀和 题目 解题思路 如果求出每一个数的因子然后累加必定TLE 可以先用埃氏筛求出质数 然后质数x对其的倍数y,a[y]+=a[y/x] 因为是从小到大,累加过去的,就能累加到所有除x的因子的数 代码 #include<iostream> #include<cstdio> using namespace std; #define uint unsigned int bool vis[20000100]; int n,t; ui

Y的博客 193

无人机+消防车:高楼灭火系统技术详解

传统的消防设备,如登高车、车载水枪、水炮和高喷车,在50米以上高度的火源面前往往力不从心,100米以上高层火灾则更加依赖消防员“爬楼”灭火,效率低下且风险极高。消防水带:采用聚乙烯丝材质,超轻、耐腐蚀、强度高,能够携带大量水或灭火泡沫进行高空喷水灭火作业。“无人机+消防车”高楼灭火系统主要由消防车和无人机两部分组成,通过机车联动实现高效灭火。高效灭火:无人机能够快速到达高层建筑顶部或指定位置进行灭火作业,大大提高了灭火效率。空压泡沫系统:配备超大水箱,支持长时间供应灭火泡沫,满足无人机灭火剂的需求。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1672

Dirichlet 前缀及后缀和 Divan and Kostomuksha

目录Dirichlet前缀和概述代码例题Dirichlet后缀和概述代码例题未完待续 Dirichlet前缀和 概述 狄利克雷前缀和是用来求解这样的问题,给定{an}\{a_n\}{an​},求解{bn}\{b_n\}{bn​},使得bk=∑d∣kadb_k=\sum_{d|k}a_dbk​=d∣k∑​ad​ 代码 例题处分析 for(int i=1;i<=CntPrime;i++) for(int j=1;j*Prime[i]<=N;j++) B[ j*Pr

ComingLiu的博客 1251

langchain4j+milvus实战

本文主要研究一下如何使用langchain4j来对接向量数据库milvus。

go4it 1474

排列显示阿拉伯语、数字及英文时的处理方法

这段时间参与开发沙特阿拉伯的网站模板,模板使用的语言是阿拉伯语,其显示顺序为从右到左,而中文、数字及英文的显示顺序为从左到右 ,所以当遇到一行文字内既有阿拉伯语又有数字和英文时会出现语序混乱的问题,如 期待显示的文案为: 按顺序写入,对应的代码如以下,其中currency_pay为变量,值为356SAR <span>الدفع الفعلي:{{currency_pay}}</span> 显示为 الدفع الفعلي : 356SAR 金额356和货币符号SAR分开了,这样显

llq886的博客 5805

洛谷P5495 Dirichlet 前缀和

洛谷P5495 Dirichlet 前缀和 TITLE 思路 ∵质数唯一分解\because 质数唯一分解∵质数唯一分解 ∴每个数对倍数产生贡献\therefore 每个数对倍数产生贡献∴每个数对倍数产生贡献 先线性筛出质数 从小到大计算 每个数对倍数产生贡献 贡献累加 CODE #include<iostream> #include<cstdio> using namespace std; const int maxn=20000000; unsigned int seed,a[

weixin_46975572的博客 128

在Keil uv5里面添加STC元器件库,不影响其他元件

先到网上下载stc.CBD(宏晶网站的地址实效了)还有STC新系列单片机的头文件,宏晶的网站就有1、在Keil/C51/INC下新建目录"STC"文件夹, 把所有STC新系列单片机的头文件拷贝到"STC"目录下。2、下载的用于keil下的STC器件数据库更名为STC.CDB并拷贝到Keil/UV4目录下。3、打开Keil文件夹下的TOOLS.ini文件。4、在[UV2]下键入CDB0="UV2\S

技术联盟 1万+

【洛谷P5495】Dirichlet 前缀和【数论】

linklinklink 分析: 可以先暴力 枚举倍数: for(reg uint i=1;i<=n;i++) for(reg uint k=1;k*i<=n;k++) b[k*i]+=a[i]; for(uint i=1;i<=n;i++) ans^=b[i]; 但这样显然过不了 在枚举下标时会多次无意义枚举 关于唯一分解定理: iii 和 kkk 都可以分解为 ∑i=1npici\sum_{i=1}^np_i^{c_i}∑i=1n​pici​​ 和 ∑i=1mpici..

绫 277

AI在电商中的搜索优化

自拟标题 《AI技术助力电商搜索优化:深度解析一线大厂面试题及算法编程实践》 概述 随着人工智能技术的不断发展,AI在电商搜索优化中的应用日益广泛。本文将围绕“AI在电商中的搜索优化”这一主题,介绍国内头部一线大厂如阿里巴巴、百度、腾讯、字节跳动等在面试中常见的AI相关面试题和算法编程题,并提供详尽的答案解

AI天才研究院 912

大模型之Spring AI实战系列(一):基础认知篇 - 开启智能应用开发之旅

Spring AI 是一个轻量级开源框架,旨在简化 AI 模型在企业级 Java 应用中的集成与管理。它提供了跨多个 AI 服务提供商的便携式 API,支持聊天、文本转图像、嵌入式模型等多种功能,并兼容主流的 AI 模型提供商如 OpenAI、Google 等。Spring AI 的核心功能包括结构化输出、向量数据库支持、工具/函数调用、可观察性、文档摄取 ETL 框架、AI 模型评估等。

寻道AI,探索AI无限可能! 6367

洛谷p5495 p6810 (Dirichlet 前缀和与后缀和)

https://www.luogu.com.cn/problem/P5495 https://www.luogu.com.cn/problem/P6810 #include <bits/stdc++.h> #define int long long #define ioss ios::sync_with_stdio(0), cin.tie(0) using namespace std; template <class cl> void read(cl &x) { x

weixin_45608039的博客 245

基于STM32、HAL库的MICRF112YMM-TR 无线收发器驱动程序设计

内部集成了 VCO、PLL、PA、LNA、混频器、滤波器等射频功能单元,极大减少了外部元件数量,降低了设计和布线难度。: 具有多种工作模式(睡眠、待机、接收、发射),待机电流极低,非常适合电池供电的物联网(IoT)设备。是 Microchip 公司生产的一款高性能、低功耗的单片 UHF ASK/FSK 收发器芯片。: 支持 ASK (幅移键控) 和 FSK (频移键控) 调制,适应不同应用需求。// 可以添加其他配置参数,如中心频率、数据速率等。智能家居(安防、遥控、传感)远程钥匙进入系统 (RKE)

corlin6688的博客 416

深入理解:狄利克雷分布(Dirichlet Distribution)

狄利克雷分布是多项分布参数的先验分布,在贝叶斯统计和机器学习中扮演着重要角色

阿正的梦工坊 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LGP5495 Dirichlet 前缀和

题目 不是很明白为什么要叫做模板 考虑到\(a_i\)能对\(b_j\)产生贡献,当且仅当\(a_i=\prod p_k^{a_k},b_j=\prod p_k^{b_k},\forall k \ a_k\leq b_k\),于是我们把每一个质数次幂看成一维,相当于对\(a\)数组求一个高维前缀和 于是我们枚举每一个质数次幂,利用高维前缀和的方式来做就行了,复杂度同埃筛\(\operat...

weixin_30802273的博客 245

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[SOJ #112]Dirichlet 前缀和

题目大意:给定一个长度为$n$的序列$a_n$,需要求出一个序列$b_n$,满足:$$b_k=\sum\limits_{i|k}a_i$$$n\leqslant10^7$ 题解:$\mathrm{Dirichlet}$前缀和,考虑把$k$写成一个无穷向量$[\beta_1,\beta_2,\beta_3,\cdots]$,满足$k=\sum\limits_iP_i^{\beta_i}...

weixin_30376083的博客 267

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Dirichlet 前缀和(数论优化式子复杂度利器)

概述 当式子优化到∑d=1n∑d∣is(i)\sum_{d=1}^{n}\sum_{d|i}s(i)∑d=1n​∑d∣i​s(i)类似形式时,我们可以o(nlogn)o(nlogn)o(nlogn)做。但是当nnn取10710^7107时就十分危险了,直到今天发现了这么个东西——Dirichlet 前缀和。它可以在o(nloglogn)o(nloglogn)o(nloglogn)的复杂度内解决这个问题,快近似o(n)o(n)o(n)了。 这篇博客用来记板子,要学可以看这篇博客。 Dirichlet 前缀和

Zimba_的博客 634

洛谷p1164

P1164 小A点菜 题目描述 uim口袋里有剩M元(M<=10000)。 餐馆虽低端,但是菜品种类不少,有N种(N<=100),第i种卖ai元(ai<=1000)。由于是很低端的餐馆,所以每种菜只有一份。 小A奉行“不把钱吃光不罢休”,所以他点单一定刚好吧uim身上所有钱花完。他想知道有多少种点菜方法。 由于小A肚子太饿,所以最多只能等待1秒。

uiqrm的博客 752

【数学】【模板】Dirichlet 前缀和

门 题目 狄利克雷前缀和 题解 n=p1k1p2k2...pmkma=p1b1p2b2...pmbm∀i,bi≤kig(n)=∑f(a)n=p_1^{k_1}p_2^{k_2}...p_m^{k_m}\\ a=p_1^{b_1}p_2^{b_2}...p_m^{b_m}\\ \forall i, b_i\leq k_i \\ g(n)=\sum f(a)n=p1k1​​p2k2​​...pmkm​​a=p1b1​​p2b2​​...pmbm​​∀i,bi​≤ki​g(n)=∑f(a) 将任意一个数质因数分解

ygmjsjdboy的博客 509

Dirichlet卷积 学习小记

定义 定义数论函数fff和ggg的狄利克雷卷积为hhh,则h(n)=∑d|nf(d)∗g(nd)h(n)=∑d|nf(d)∗g(nd)h(n)=\sum_{d|n}f(d)*g({n\over d}),记作h=f∗gh=f∗gh=f*g。 一些性质 DirichletDirichletDirichlet卷积满足交换律,结合律,对加法满足分配律 两个积性函数的狄利克雷卷积依旧为积性函数。...

XianHaoMing的博客 2517

【十二省联考2019】【LOJ3048】【洛谷P5283】【BZOJ5495】异或粽子(01Trie)(堆)

LOJ传送门 洛谷传送门 BZOJ传送门 解析: 这个。。。其实怎么开心怎么玩就好了。 可以只建一个01Trie,然后查询前k∗2k*2k∗2的值就行了。 也可以只建一个,然后每个在自己的01Trie里面查询就行了。 还是挺休闲的。 代码: #include<bits/stdc++.h> #define ll long long #define re register #defin...

zxyoi_dreamer的博客(不定期诈尸) 317
上一篇: 【洛谷P5253】丢番图
下一篇: 【UVA12716】 GCD等于XOR
SSL_lyw
博客等级 码龄6年 28粉丝 113原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值