bzoj2005 [NOI2010]能量采集 莫比乌斯反演

2024-03-30 02:48

本文主要是介绍bzoj2005 [NOI2010]能量采集 莫比乌斯反演,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:传送门

考虑点 ( x , y ) (x,y) (x,y)对答案的贡献:
g c d ( x , y ) = k gcd(x,y)=k gcd(x,y)=k x = a k , y = b k . x=ak,y=bk. x=ak,y=bk.
若有 x ′ , y ′ x',y' x,y满足 ( x ′ , y ′ ) (x',y') (x,y) ( 0 , 0 ) (0,0) (0,0) ( x , y ) (x,y) (x,y)的直线上,则有 y ′ x ′ = y x = b a \large\frac{y'}{x'}=\frac{y}{x}=\frac{b}{a} xy=xy=ab
( x ′ , y ′ ) (x',y') (x,y)珂以取的值为: ( a , b ) , ( 2 a , 2 b ) , . . . , ( ( k − 1 ) a , ( k − 1 ) b ) (a,b),(2a,2b),...,((k-1)a,(k-1)b) (a,b),(2a,2b),...,((k1)a,(k1)b)
所以 ( 0 , 0 ) (0,0) (0,0) ( x , y ) (x,y) (x,y)共有 k − 1 k-1 k1个点,即 g c d ( x , y ) − 1 gcd(x,y)-1 gcd(x,y)1个点qwq。
所以答案变成:
a n s = Σ i = 1 N Σ j = 1 M ( 2 ( g c d ( i , j ) − 1 ) + 1 ) ans=\Large\Sigma\large_{i=1}^{N}\Large\Sigma\large_{j=1}^M(2(gcd(i,j)-1)+1) ans=Σi=1NΣj=1M(2(gcd(i,j)1)+1)
= 2 Σ i = 1 N Σ i = 1 M g c d ( i , j ) − N ∗ M =2\Large\Sigma\large_{i=1}^N\Large\Sigma\large_{i=1}^Mgcd(i,j)-N*M =2Σi=1NΣi=1Mgcd(i,j)NM
调换一下枚举顺序,珂以得到 a n s = 2 Σ t = 1 m i n ( N , M ) t ( Σ i = 1 N Σ j = 1 M [ g c d ( i , j ) = = t ] ) − N ∗ M ans=2\Large\Sigma\large_{t=1}^{min(N,M)}t(\Large\Sigma\large_{i=1}^N\Large\Sigma\large_{j=1}^M[gcd(i,j)==t])-N*M ans=2Σt=1min(N,M)t(Σi=1NΣj=1M[gcd(i,j)==t])NM
对这坨东西大莉莫比乌斯反演,乱搞一波(乱搞过程:蒟蒻的博客qwq)
得到 a n s = Σ t = 1 m i n ( N , M ) ( t Σ t ∣ d μ ( d t ) ⌊ N d ⌋ ⌊ M d ⌋ ) − N ∗ M ans=\Large\Sigma\large_{t=1}^{min(N,M)}(t\Large\Sigma\large_{t|d}\mu(\frac{d}{t})\lfloor\frac{N}{d}\rfloor\lfloor\frac{M}{d}\rfloor)-N*M ans=Σt=1min(N,M)(tΣtdμ(td)dNdM)NM
然后每次大莉枚举 t t t,对括号里的部分大莉枚举 t t t的倍数即可。
珂以证明这样时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn)的qwq
话说这道题好像还有一个查询只用 O ( n ) O(\sqrt n) O(n )的神仙做法……比较玄学qwq

毒瘤代码

#include<stdio.h>
#include<cstring> 
#include<algorithm>
#define re register int
#define rl register ll
using namespace std;
typedef long long ll;
int read() {re x=0,f=1;char ch=getchar();while(ch<'0' || ch>'9') {if(ch=='-')	f=-1;ch=getchar();}while(ch>='0' && ch<='9') {x=10*x+ch-'0';ch=getchar();}return x*f;
}
const int Size=100005;
int tot,prime[Size],mu[Size];
bool vis[Size];
void getp(int maxn) {mu[1]=1;for(re i=2; i<=maxn; i++) {if(!vis[i]) {prime[++tot]=i;mu[i]=-1;}for(re j=1; j<=tot && i*prime[j]<=maxn; j++) {vis[i*prime[j]]=true;if(i%prime[j]==0)	break;mu[i*prime[j]]=-mu[i];}}
}
int main() {int n=read();int m=read();int minn=min(n,m);getp(minn);ll ans=0;for(re t=1; t<=minn; t++) {int lst;ll sum=0;for(re i=t; i<=minn; i+=t) {sum+=(ll)mu[i/t]*(n/i)*(m/i);}ans+=sum*t;}printf("%lld",(ans<<1ll)-(ll)n*m);return 0;
}

这篇关于bzoj2005 [NOI2010]能量采集 莫比乌斯反演的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860305

相关文章

hdu6053 TrickGCD 莫比乌斯反演

TrickGCD Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Problem Description You are given an array  A  , and Zhu wants to know there are how many d

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

Python 爬虫入门 - 基础数据采集

Python网络爬虫是一种强大且灵活的工具,用于从互联网上自动化地获取和处理数据。无论你是数据科学家、市场分析师,还是一个想要深入了解互联网数据的开发者,掌握网络爬虫技术都将为你打开一扇通向丰富数据资源的大门。 在本教程中,我们将从基本概念入手,逐步深入了解如何构建和优化网络爬虫,涵盖从发送请求、解析网页结构到保存数据的全过程,并讨论如何应对常见的反爬虫机制。通过本教程,你将能够构建有效的网络爬

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

Python 爬虫入门 - 基础数据采集流程拓展

在网络爬虫的世界里,数据就是一切。通过爬虫技术,你可以自动化地收集各种类型的公开数据,从文本和图片到复杂的结构化信息,这些数据为各类分析和应用提供了基础。 本教程将引导你深入了解爬虫可以采集的数据种类,如何有效地获取这些数据,并探讨如何使用代理服务来规避限制与增强爬虫的灵活性。无论是初学者还是有经验的开发者,这些知识都将帮助你在网络数据采集中更加游刃有余。 文章目录 可采集的数据基本操作

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司,致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题,助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务,涵盖不同应用场景和需求: •高分辨率图像采集:适用于高质量图像需求,如医学影像、工业检测等。 •实时图像采集:适用于需要实时处理的应用场景,如安防监

大隈设备采集

大隈(OKUMA)荣一在名古屋东区成立自己的私人公司,开始制造、销售制面机械。下面是社长的一些介绍:我司自1898年生产·销售制面机开始创业以来,秉承若所需之物世间尚无,必不妥协,独自创造的“破土创新”精神,并将其一脉相承,于1904年开始进行机床的生产。自创业以来,历经120余年,从未间断对先进技术和产品的开发。1963年,作为日本机床制造商,首次自主研发出数控装置“OSP”,利

【Android 多媒体应用】使用MediaCodec将摄像头采集的视频编码为h264

转载自:http://www.cnblogs.com/CoderTian/p/6224605.html MainActivity.java import android.app.Activity;import android.graphics.ImageFormat;import android.hardware.Camera;import android.hardware.Camera

飓风算法2.0上线,百度熊掌号官方说严厉打击恶劣采集行为

飓风算法2.0上线,百度熊掌号官方说严厉打击恶劣采集行为 2018年9月13日百度搜索资源平台发文百度搜索将严厉打击恶劣采集行为,推出飓风算法 2.0。 飓风算法由来 飓风算法是当年百度官方针对恶劣采集为内容主要来源的网站,而推出的一种搜索引擎算法。 飓风算法2.0上线 为了营造良好的搜索内容生态,保护搜索用户的阅读浏览体验,保障优质内容生产方在百度搜索中的权益,百度搜索官方公告将于

【Get深一度】信号处理(一)——能量信号与功率信号的区别

1.1 能量信号与功率信号的区别         通常情况下,电信号默认为电流(I)或电压(V),有两种主要类型:能量信号、功率信号。相信有朋友现在依然还是傻傻分不清楚这两者之间的区别。 下面我将进行分条详述:(关键词已加黑)        1)能量信号:表现为    确定或随机        2)功率信号:变现为    周期或随机          注:其中随机信号是比较好理解的