洛谷P1447 - [NOI2010]能量采集

2024-03-19 17:58

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

Portal

Description

给出\(n,m(n,m\leq10^5),\)计算\[ \sum_{i=1}^n \sum_{j=1}^m (2gcd(i,j)-1)\]

Solution

简单起见我们来钦定\(n\leq m\),然后计算\(\sum_{i=1}^n \sum_{j=1}^m gcd(i,j)\)
\[ans = \sum_{i=1}^n \sum_{j=1}^m gcd(i,j) = \sum_{d=1}^n d\sum_{i=1}^n \sum_{j=1}^m [gcd(i,j)=d]\]根据洛谷P2522,变换为
\[ ans = \sum_{d=1}^n d \sum_{k=1}^{⌊\frac{n}{d}⌋} \mu(k)⌊\frac{n}{kd}⌋⌊\frac{m}{kd}⌋ \]然后我们就可以计算了。

时间复杂度\(O(n\sqrt n)\)

Code

//[NOI2010]能量采集
#include <algorithm>
#include <cstdio>
using std::min; using std::swap;
typedef long long lint;
int const N=1e5+10;
int n,m;
int mu[N],pre[N];
int cntP,pr[N]; bool notP[N];
void init(int n)
{mu[1]=1;for(lint i=2;i<=n;i++){if(!notP[i]) pr[++cntP]=i,mu[i]=-1;for(int j=1;j<=cntP;j++){lint x=pr[j]*i; if(x>n) break;notP[x]=true;if(i%pr[j]) mu[x]=-mu[i]; else {mu[x]=0; break;}}}for(int i=1;i<=n;i++) pre[i]=pre[i-1]+mu[i];
}
int main()
{scanf("%d%d",&n,&m); if(n>m) swap(n,m);init(m);lint ans=0;for(int g=1;g<=n;g++){int n0=n/g,m0=m/g; lint res=0;for(int L=1,R;L<=n0;L=R+1){int v1=n0/L,v2=m0/L; R=min(n0/v1,m0/v2);res+=1LL*v1*v2*(pre[R]-pre[L-1]);}ans+=res*g;}printf("%lld\n",ans*2-1LL*n*m);return 0;
}

转载于:https://www.cnblogs.com/VisJiao/p/LgP1447.html

这篇关于洛谷P1447 - [NOI2010]能量采集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

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

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

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

能量项链,洛谷

解释:  环形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”,利

洛谷P5490扫描线

0是最小的数字,将一个线段看成一个区间,对于一个矩形,从下扫到上,入边为1,而出边为-1,意思是将这个区间上的所有点加1(区间修改).把线段表示为Line[i],其中记录了l,r,h,tag,左右端点,高度,入边还是出边(1或-1) 那么每次区间修改后不为0的区间它的值可能是1,2,3或者是其它数字,这不好统计,可以将它转化一下,0是不是表示没有被覆盖过的地方,我们只要统计0的个数然后用总长减去

【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