luogu1447 [NOI2010]能量采集 莫比乌斯反演
冬令营考炸了,我这个菜鸡只好颓废数学题了
NOI2010能量采集
由题意可以写出式子:
\(\sum_{i=1}^n\sum_{j=1}^m(2\gcd(i,j)-1)\)
\(=2\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)-nm\)
我们现在考虑\(\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)\),默认n比m小
\(=\sum_{p=1}^np\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=p]\)
\(=\sum_{p=1}^np\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}[gcd(i,j)=1]\)
\(=\sum_{p=1}^np\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}\sum_{d|i,d|j}\mu(d)\)
\(=\sum_{p=1}^np\sum_{d=1}^n\mu(d)\lfloor\frac n{pd}\rfloor\lfloor\frac m{pd}\rfloor\)
\(=\sum_{q=1}^n\sum_{d|q}\mu(d)\frac qd\lfloor\frac n{q}\rfloor\lfloor\frac m{q}\rfloor\)
由于是单组数据,所以不用前缀和数论分块
所以这是一道莫比乌斯反演题,32行一遍AC
#include <cstdio>
using namespace std;
bool vis[100010];
int mu[100010], tot, prime[100010], fuck = 100000;
long long sum[100010];
int main()
{
	mu[1] = 1;
	for (int i = 2; i <= fuck; i++)
	{
		if (vis[i] == 0) prime[++tot] = i, mu[i] = -1;
		for (int j = 1; j <= tot && i * prime[j] <= fuck; j++)
		{
			vis[i * prime[j]] = true;
			if (i % prime[j] == 0) break;
			mu[i * prime[j]] = -mu[i];
		}
	}
	for (int i = 1; i <= fuck; i++)
		for (int j = i, k = 1; j <= fuck; j += i, k++)
			sum[j] += mu[i] * k;
	int n, m;
	scanf("%d%d", &n, &m);
	if (n > m) { int t = n; n = m; m = t; }
	long long ans = 0;
	for (int i = 1; i <= n; i++)
		ans += sum[i] * (n / i) * (m / i);
	printf("%lld\n", ans * 2 - n * (long long)m);
	return 0;
}
luogu1447 [NOI2010]能量采集 莫比乌斯反演的更多相关文章
- BZOJ2005: [Noi2010]能量采集   莫比乌斯反演的另一种方法——nlogn筛
		分析:http://www.cnblogs.com/huhuuu/archive/2011/11/25/2263803.html 注:从这个题收获了两点 1,第一象限(x,y)到(0,0)的线段上整点 ... 
- BZOJ2005:[NOI2010]能量采集(莫比乌斯反演,欧拉函数)
		Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得 ... 
- BZOJ 2005: [Noi2010]能量采集 [莫比乌斯反演]
		题意:\((0,0)\)到\((x,y),\ x \le n, y \le m\)连线上的整点数\(*2-1\)的和 \((0,0)\)到\((a,b)\)的整点数就是\(gcd(a,b)\) 因为. ... 
- [luogu1447 NOI2010] 能量采集 (容斥原理)
		传送门 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的 ... 
- bzoj 2005 能量采集 莫比乌斯反演
		我们要求的是∑ni=1∑mj=1(2×gcd(i,j)−1) 化简得2×∑ni=1∑mj=1gcd(i,j)−n×m 所以我们现在只需要求出∑ni=1∑mj=1gcd(i,j)即可 ∑ni=1∑mj= ... 
- luogu1447 [NOI2010]能量采集
		考虑暴力,答案显然是 \(\sum_{i=1}^n\sum_{j=1}^m(2(\gcd(i,j)-1)+1)=\sum_{i=1}^n\sum_{j=1}^m(2\gcd(i,j)-1)\). 考虑 ... 
- BZOJ 2005 [Noi2010]能量采集 (数学+容斥 或 莫比乌斯反演)
		2005: [Noi2010]能量采集 Time Limit: 10 Sec Memory Limit: 552 MBSubmit: 4493 Solved: 2695[Submit][Statu ... 
- [NOI2010]能量采集(莫比乌斯反演)
		题面: bzoj luogu NOI2010能量采集 题解 读完题之后我们发现在每个产生贡献的点\((x1,y1)\)中,它与原点之间的点\((x2,y2)\)都满足\(x2|x1\),\(y2|y1 ... 
- [Noi2010]能量采集 (莫比乌斯反演)
		[Noi2010]能量采集 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后, 栋栋再使用一个能量汇集机器把这些植物采集到的能 ... 
随机推荐
- 第七章 Java中的13个原子操作类
			当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i = 1:A线程更新i + 1,B线程也更新i + 1,经过两个线程操作之后可能i不等于3,而是等于2,.因为A和B线 ... 
- nginx isis
			Nginx+IIS简单的部署 随着互联网项目用户访问量不断上升,单点web服务器是无法满足大型高并发高负载的业务处理的,为了给web服务器做负载均衡方案,打算采用Nginx搭建负载均衡服务器,把用 ... 
- 常见地图服务(WMS、WFS、WCS、TMS、WMTS
			1.网络地图服务(WMS) 网络地图服务(WMS)利用具有地理空间位置信息的数据制作地图.其中将地图定义为地理数据可视的表现.能够根据用户的请求返回相应的地图(包括PNG,GIF,JPEG等栅格形式或 ... 
- 使用ffmpeg转换视频格式
			命令: ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y outfile 说明: ... 
- 【总结整理】关于ArcGIS中拓扑的理解
			空间拓扑: https://www.baidu.com/link?url=f8fd1d75GhwtT1JuyPDZydZlWCgEXB9DeuTzDqGQIIRpq0bM-8t3MlC5tXYvEwQ ... 
- strrpos()和strripos()函数【PHP】
			strripos() 函数 定义和用法 strripos() 函数查找字符串在另一个字符串中最后一次出现的位置. 如果成功,则返回位置,否则返回 false. 语法 strrpos(string,fi ... 
- UIScrollView现实自动循环滚动
			#import "RootViewController.h" #define width [UIScreen mainScreen].bounds.size.width #defi ... 
- 安装postman工具模拟请求
			扩展工具->: 注意,在创建快捷方式后,第一次打开这个工具,会让你注册信息,忽略它.关闭,重新打开postman工具,然后如下所示: 
- debug---null Pointer Exception--一步步查找(1)
			找到对应的226行代码: 通过debug打断点,然后选中需要查看的代码,右击,选择Evaluate Expresstion,选择确认,就可以弹出具体的值,发现真的为null. 通过simon帮忙分析, ... 
- C++面试笔记--STL模板与容器
			1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vec ... 
