[BZOJ3994][SDOI2015]约数个数和(数论)

ubuntu20.4源码安装最新gcc(gcc V12.2) Ubuntu20.4自带的gcc为V9.4.0的版本,老版本的gcc存在不支持新版本C语言规范,在配置、编译、安装应用软件或工具时,可能存在不能正确安装的问题。(比如:libpqxx-7.7.4在配置时要求c++17版本的支持,但gcc V9.4.0版本不支持c++17)。因此本文介绍ubuntu20.4的系统下载最新gcc12.2版本源码,并进行本地编译、安装。本节内容包括gcc12.2的必备库安装和gcc12.2安装两部分内容组成。 阅读详情

=== ===

这里放传送门

=== ===

题解

SDOI怎么净出这样goushi的数论。。让不让人活T_T

题目要求的是 ∑i=1N∑j=1Md(i×j) 。啥?约数个数是可以筛的?但是这个题一看数据范围显然不可行啊QwQ。。但是这个题目关键的一个特点就是它要求 d 的那个东西已经给表示成了i×j,那么如果我们知道 i 的所有约数pi, j 的所有约数qi,那么任意一个 pi×qj 一定能表示 i×j 的一个约数,同样 i×j 的一个约数也必定能表示成 pi×qj 的形式。

那么我们只需要知道有多少本质不同的 pi×qj 就可以了。显然如果 pi 和 qj 不互质,那么这一组乘积一定能被另外两个互质的数的乘积代替,并且这两个数肯定也分别是 i 和j的约数。那么我们就有了这么一个公式:

d(i×j)=∑p|i∑q|j[(p,q)==1]

于是我们把这个式子代入上面那个初始公式得到:

∑i=1N∑j=1M∑p|i∑q|j[(p,q)==1]

然而只有这个式子还是不够,我们需要进一步化简。首先把式子展开然后 胡乱地移动一下,变成
∑p=1N∑i=1N[p|i]∑q=1M∑j=1M[q|j][(p,q)==1]

可以发现其中 ∑i=1N[p|i] 这一句就是在问 1..N 的数字中有多少数字是 p 的倍数,那么这整个式子和⌊Np⌋是相等的。同样, ∑j=1M[q|j] 这个东西可以换成 ⌊Mq⌋ 。再整理一下式子就变成:

∑i=1N∑j=1M⌊Ni⌋⌊Mj⌋[(i,j)==1]

发现后面有一个 [(i,j)==1] 的东西,我们可以考虑再把它搞一下转化成一个带 μ 的式子。以下设 N 为N和 M 中的较小者。

首先利用反演公式e=μ×1,可以把式子转化成

∑i=1N∑j=1M⌊Ni⌋⌊Mj⌋∑d=1N[d|i][d|j]μ(d)

注意到 i 和j都是 d 的倍数时式子才有意义,所以设i=di′, j=dj′ ,然后代进去替换可以得到:

∑d=1Nμ(d)∑i=1⌊Nd⌋∑j=1⌊Md⌋⌊Ni×d⌋⌊Mj×d⌋

接下来我们要利用下取整函数的一个性质: ⌊xa×b⌋=⌊⌊xa⌋b⌋ 。于是对于 ⌊Ni×d⌋ 这个东西,我们可以把它化成 ⌊⌊Nd⌋i⌋ 。这个时候再观察 ∑i=1⌊Nd⌋⌊⌊Nd⌋i⌋ 这个东西,可以发现它是一个关于 ⌊Nd⌋ 的函数。最后式子变成:

∑d=1Nμ(d)f(⌊Nd⌋)f(⌊Md⌋)

对于 f(n)=∑i=1n⌊ni⌋ ,我们可以用同样的分块做法在 O(n√) 的时间内求得单个 f 值,那么就可以用O(nn√)的时间预处理所有需要的 f 值。那么最终计算的时候求f的复杂度变成了 O(1) ,那么上面这个式子显然可以用分块的做法在 O(n√+m−−√) 的时间复杂度内求解。最后的时间复杂度是 O(nn√+T(n√+m−−√)) 。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 50000
using namespace std;
int mu[50010],prm[50010],f[50010],T,n,m,p1,p2;
bool ext[50010];
long long ans;
void calc_mu(){
    mu[1]=1;
    for (int i=2;i<=N;i++){
        if (ext[i]==false){
            prm[++prm[0]]=i;
            mu[i]=-1;
        }
        for (int j=1;j<=prm[0];j++){
            if (i*prm[j]>N) break;
            ext[i*prm[j]]=true;
            if (i%prm[j]==0){
                mu[i*prm[j]]=0;
                break;
            }else
              mu[i*prm[j]]=-mu[i];
        }
        mu[i]+=mu[i-1];
    }
}
int calc_f(int n){
    int ans=0;
    for (int i=1,j;i<=n;i=j+1){
        j=n/(n/i);
        if (j>n) j=n;
        ans+=(n/i)*(j-i+1);
    }
    return ans;
}
int main()
{
    calc_mu();
    for (int i=1;i<=N;i++)
      f[i]=calc_f(i);
    scanf("%d",&T);
    for (int time=1;time<=T;time++){
        scanf("%d%d",&n,&m);
        ans=0;p1=p2=1;
        if (n>m) swap(n,m);
        for (int i=1;;){
            if (p1<=p2){
                ans+=(long long)f[n/i]*f[m/i]*(mu[p1]-mu[i-1]);
                i=p1+1;
            }else{
                ans+=(long long)f[n/i]*f[m/i]*(mu[p2]-mu[i-1]);
                i=p2+1;
            }
            if (i>n) break;
            p1=n/(n/i);p2=m/(m/i);
        }
        printf("%I64d\n",ans);
    }
    return 0;
}

偏偏在最后出现的补充说明

常用的经典的化式子方法一定要记熟,做题的时候能一下子想到才行。

其实现在看这个题还是挺简单的一个数论。。用的都是基础公式,化式子的方法也都非常经典。。但是当时不知道为啥瞪着题解看了一天愣是没看懂。。

YOLOv11魔改高效涨点 | 注意力篇 | SimAM注意力:基于神经科学的 3D 注意力机制,三维权重的暴力美学,无参数也能暴力涨点?代码极简,彻底疯狂!!! 在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道注意力(Channel-wise)和空间注意力(Spatial-wise)模块不同,我们的模块在不向原始网络添加参数的情况下,推断出层中特征图的 3D 注意力权重。具体来说,我们基于一些知名的神经科学理论,提出优化一个能量函数来寻找每个神经元的重要性。我们进一步推导出了该能量函数的快速闭式解,并表明该解可以用不到十行代码实现。 阅读详情

相关推荐

Matlab_Marr小波尺度变换图

多尺度的连续小波变换分解后时间尺度图 墨西哥Marr小波函数: %delta 小波变换尺度 %N     小波函数的长度 %s     原始信号 %g     原始信号某个尺度下的小波变化系数 function g=Singularity_Detection(delta,N,s); %保持信号长度 n=length(s); % 构造墨西哥小帽小波函数 for index_x=1

桔色小西瓜 6602

bzoj3994(莫比乌斯函数+结论)

又欺负窝不会结论qaq 结论是这个: 这个其实很好证明,因为nm的因子一定可以被表示成(化简之后),然后pq互质,这样就变成了求互质的pq的对数。。 由此可以做出如下化简 然后令,上式又化为 然后g可以直接分块预处理,然后再分块算出上式,问题就解决了,复杂度O(Tsqrt(n))       /** *         ┏┓    ┏┓ *         ┏┛...

qkoqhh 371

MySQL安装配置教程(超级详细)

一、 下载MySQL Mysql官网下载地址:MySQL :: Download MySQL Installer (Archived Versions) 1. 选择要安装的版本,本篇文章选择的是5.7.31版本,点击Download下载 正在上传…重新上传取消 二、 安装MySQL 1. 选择设置类型双击运行mysql-installer-community-5.7.31.0.msi 这里选择是自定义安装,所以直接选择“Custom”,点击“Next” “Developer Default”是

m0_67322837的博客 5万+

【SDOI2015】BZOJ3994 约数个数和题解(Mobius反演+除法分块)

题目:BZOJ3994. 题目大意,设d(n)=∑d∣n1d(n)=\sum_{d|n}1d(n)=∑d∣n​1,给定TTT组询问,每次询问∑i=1n∑j=1md(ij)\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)∑i=1n​∑j=1m​d(ij). 我们先考虑,如何在知道iii和jjj的情况下O(ij)O(ij)O(ij)求d(ij)d(ij)d(ij). 考虑知道ijij...

hzk_cpp的博客 406

EEGLAB+ERPLAB实战:从.cnt文件到情绪ERP差异波,一份避坑指南

本文详细介绍了使用EEGLAB和ERPLAB处理Neuroscan的.cnt格式脑电数据的全流程,从数据导入、预处理到情绪ERP差异波生成。重点解决了采样率验证、事件标记检查、重参考选择、滤波策略与ICA组合等实操难题,并提供了情绪图片ERP研究中P1、EPN和LPP成分的分析技巧,帮助研究者避免常见错误,提升数据处理效率。

weixin_26795617的博客 266

NMS非极大值抑制算法原理

NMS非极大值抑制算法

pywin 3502

bzoj3994(约数个数和 简单反演)

题目 感觉这题好简单哦 #include<cstdio> using namespace std; typedef long long ll; const int N=5e4+5,mod=1e9+7; int is[N],prime[N]; ll mu[N],s[N]; void init(){ mu[1]=1;int tot=0; for(int i=2;i<...

qq_42576687的博客 181

高效搭建微信公众号爬虫全流程

微信公众号爬虫系统成功完成功能测试验证。该系统具备完整的数据采集与管理能力,支持多公众号内容爬取、数据存储与统计分析。通过命令行界面可执行爬取操作(如量子位、新智元等公众号),查看最新文章列表和系统统计信息。测试显示SQLite数据库正常存储数据,所有核心功能(多源支持、文章检索、数据统计)均运行良好。系统采用模块化设计,扩展性强,为后续接入真实API或网页爬取奠定了坚实基础,是AI内容聚合的优质开发平台。🎉

weixin_44975687的博客 1556

【bzoj3994】【SDOI2015】约数个数和【数论】【反演】

虽然题目上写了反演但是我不知道什么是反演……如果你把Sigma调换位置叫做反演的话。 这道题题面非常简单: 设d(x)d(x)为xx的约数个数,给定N、MN、M, 求∑i=1N∑j=1Md(ij)\sum_{i=1}^N\sum_{j=1}^Md(ij) 当时我too naive,看到这玩意就默默地打50分暴力去了。。。 今天江苏神犇们做了这道题,我顺便听明白了~~ 首先它不知用什么精妙

ZMOIYNLP的专栏 5919

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8060

LPDDR6来了!带你一文看懂它和LPDDR5/5X的差距 + 技术演进逻辑全解析

🧠从速率到架构,从总线宽度到协议设计,LPDDR6 每一个改动都不是拍脑袋做的,它针对的是AI / HPC / 云计算 / 下一代笔记本平台的真实需求。作为工程师的我们,不仅要“用得上”,更要“测得准”,因为没有测试验证,就没有量产落地!🎯LPDDR6不是未来,而是现在进行时!

weixin_43199439的博客 2173

BZOJ 3994 (思路最大流)

因为用时可以二分,所以先二分最小值,那么判断用最大流就可以了。 好像不用解释什么,对于源点对每个装备连一条边,边权为时间*装备杀伤力,经过可行性矩阵 ,流向n个机器人,每个机器人向汇点流自己的防御值。 那么如果最大流等于所有机器人防御值之和,那么最大流方案,既是该时间下的可行性方案。 //#pragma comment(linker, "/STACK:1024000000,102400000

playwfun的专栏 361

基于深度学习的AI生成式人脸图像鉴别

AIGC(AI内容生成)技术的快速发展确实为创作者提供了高效生产力工具,但同时也引发了一些问题和挑战。这些技术可以生成以假乱真的图像、视频换脸等,给不法分子提供了滥用的机会。其中,一些不法分子可能利用AIGC技术制造虚假新闻、违反版权、绕过活体身份验证、散布谣言和诽谤他人、进行敲诈勒索等非法活动,以谋取不当利益。这些行为给社会造成了严重的负面影响,破坏了信息的真实性和可信度。因此,我们需要认识到AIGC技术的潜在风险,并采取相应的措施来应对。

mingo_敏 4497

BZOJ3994: [SDOI2015]约数个数和

BZOJ3994: [SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N、M,求 Input 输入文件包含多组测试数据。 第一行,一个整数T,表示测试数据的组数。 接下来的T行,每行两个整数N、M。 Output T行,每行一个整数,表示你所求的答案。 Sample Input 2 7 4 5 6 Sam...

weixin_30371875的博客 58

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

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

BZOJ_P3994 [SDOI2015]约数个数和(数论+莫比乌斯反演)

BZOJ传送门 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 450 Solved: 302 [Submit][Status][Discuss] Description 设d(x)为x的约数个数,给定N、M,求 Input 输入文件包含多组测试数据。 第一行,一个整数T,表示测试数据的组数。 接下来的T行,每行两个整数N、M

BeiYu 479

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【BZOJ3994】约数个数和(SDOI2015)-莫比乌斯反演+数论分块

测试地址:约数个数和 做法:本题需要用到莫比乌斯反演+数论分块。 首先,因为ijijij的每个因数都可以唯一表示成pjqpjq\frac{pj}{q}的形式,其中p|i,q|j,gcd(p,q)=1p|i,q|j,gcd(p,q)=1p|i,q|j,\gcd(p,q)=1,所以有: d(ij)=∑x|i∑y|j[gcd(x,y)=1]d(ij)=∑x|i∑y|j[gcd(x,y)=1]d(i...

Maxwei_wzj的OI世界 287

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【bzoj3994】[SDOI2015]约数个数和 线性筛法+莫比乌斯反演+数论分块

这题有个奇怪的性质,发现这个性质才可做。 为什么呢?考虑d是p的倍数,i是d的倍数,d可以是p的1~n/p倍,当d=kp时,i可以选n/(pk)个数。 f数组怎么处理呢?O(n√n)就可以吧。 #include #include #include #include #include #include #define maxn 50010 using namespace std;

Oxer的专栏 784

【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演

【BZOJ3994】[SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N、M,求 Input 输入文件包含多组测试数据。 第一行,一个整数T,表示测试数据的组数。 接下来的T行,每行两个整数N、M。 Output T行,每行一个整数,表示你所求的答案。 Sample Input 2 7 4 5 6 ...

weixin_30819163的博客 83

[bzoj3994][SDOI2015]约数个数和

3994: [SDOI2015]约数个数和Time Limit: 20 Sec Memory Limit: 128 MB Submit: 505 Solved: 329 [Submit][Status][Discuss] Description设d(x)为x的约数个数,给定N、M,求 ∑ni=1∑mj=1d(ij)\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij) In

Vampire 1133

bzoj3994【SDOI2005】约数个数和

莫比乌斯反演(依旧没题解...hhh)

AaronPolaris 2115

BZOJ 3994 Sdoi2015 约数个数和 莫比乌斯反演

题目大意:求∑ni=1∑mj=1d(ij)\sum_{i=1}^n\sum_{j=1}^md(ij) 首先我们有一个很神的结论: ∑ni=1∑mj=1d(ij)=∑ni=1∑mj=1⌊ni⌋⌊mj⌋[gcd(i,j)==1]\sum_{i=1}^n\sum_{j=1}^md(ij)=\sum_{i=1}^n\sum_{j=1}^m\lfloor\frac n i\rfloor\lfloor\fr

世界 5040

[BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)

[BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N、M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问,\(N,M,T \leq 50000\) 分析 首先有一个结论 \[d(nm)= \sum _{i |n} \sum _{j|m} [gcd(i,j)=1]\] 这是因为nm的约数都可以表...

weixin_30551963的博客 127

【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演

Description设d(x)为x的约数个数,给定N、M,求 Input输入文件包含多组测试数据。第一行,一个整数T,表示测试数据的组数。 接下来的T行,每行两个整数N、M。OutputT行,每行一个整数,表示你所求的答案。Sample Input27 45 6 Sample Output110121 HINT1<=N, M<=500001<=T<=50000SourceRound 1 感谢y

DQS的树洞 1259

bzoj3994 SDOI2015 约数个数和

题面:bzoj3994 题意:设d(x)d(x)d(x)是xxx的约数个数,求∑i=1n∑j=1md(ij)\sum _{i=1} ^n \sum_{j=1} ^m d (ij)∑i=1n​∑j=1m​d(ij) 题解:d(ij)=∑x∣i∑y∣j[gcd(x,y)=1]d(ij) = \sum _{x \mid i} \sum_{y \mid j} [gcd (x, y) = 1]d(ij)=∑...

wennitao的博客 241

bzoj3994: [SDOI2015]约数个数和 莫比乌斯反演

bzoj3994: [SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N、M,求 ∑iN∑jMd(ij)\sum\limits_i^N\sum\limits_j^Md(ij) Input 输入文件包含多组测试数据。 第一行,一个整数T,表示测试数据的组数。 接下来的T行,每行两个整数N、M。 Output T行,每行一个整数,表示你

maxtir的博客 286

[BZOJ3994][莫比乌斯反演][SDOI2015]约数个数和

BZOJ3994 ------------------------------------这里是留给证明的地方------------------------------------- ------------------------------------这里是留给证明的地方------------------------------------- 预处理莫比乌斯函数前缀和 和 约数个数和的前缀...

romiqi 236
上一篇: [BZOJ1018][SHOI2008]堵塞的交通traffic(线段树)
下一篇: [BZOJ3643]Phi的反函数(数论+dfs)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值