BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
分析:http://www.cnblogs.com/huhuuu/archive/2011/11/25/2263803.html
注:从这个题收获了两点
1,第一象限(x,y)到(0,0)的线段上整点的个数是gcd(x,y)
2,新学了一发求gcd(x,y)=k有多少对的姿势,已知0<x<=n,0<y<=m
令x=min(n,m),令f[i]代表gcd(x,y)=i的对数,
那么通过O(xlogx)的复杂度就可以得到f[1]到f[n](反着循环)
普通的容斥(即莫比乌斯反演)其实也是O(xlogx)的,只是需要筛一遍莫比乌斯函数
总结:对于求单个的gcd(x,y)=k的对数,可以用莫比乌斯反演来做,这样的复杂度是O(n/k)的
对于求gcd(x,y)=(1,..n)的对数,每个分别求解时,直接用这样的O(nlogn)的筛法就好,省代码,还好写
#include<cstdio> #include<cstring> #include<queue> #include<cstdlib> #include<algorithm> #include<vector> #include<cmath> using namespace std; typedef long long LL; const int N=1e5+5; const int INF=0x3f3f3f3f; LL f[N]; int main(){LL n,m,ans=0;scanf("%lld%lld",&n,&m);if(n>m)swap(n,m);for(int i=n;i>=1;--i){f[i]=n/i*(m/i);for(int j=i+i;j<=n;j+=i)f[i]-=f[j];ans+=f[i]*(2*i-1); }printf("%lld\n",ans);return 0; }
View Code
转载于:https://www.cnblogs.com/shuguangzw/p/5440297.html
BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛相关推荐
- [2019.1.14]BZOJ2005 [Noi2010]能量采集
以下设\(n\ge m\). 首先,一个点\((x,y)\)到\((0,0)\)的路径上经过的点的数量(不包括首尾)为\(gcd(x,y)-1\). 所以它的能量损耗为\(2\times gcd(x, ...
- bzoj2005: [Noi2010]能量采集
不知道什么算法. 首先求一颗植物(i,j)与能量采集器的连线上有几颗植物. 答案是(gcd(i,j)-1),设i'= i/gcd(i,j),j'=j/gcd(i,j). 则这几颗植物是(i'k,j'k ...
- BZOJ2005 NOI2010 能量采集 欧拉函数
题意:求$\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^M {f(i,j)} } $,其中f(i,j)=(0,0)与(i,j)连线上点的数量 题解: 如果一个点 ...
- (每日一题)P1447 [NOI2010] 能量采集(莫反套路 + 欧拉反演 / 容斥原理)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.19 莫反 Problem Solu ...
- P1447 [NOI2010]能量采集(mobius反演)
P1447 [NOI2010]能量采集 式子化简 显然题目就是要我们求∑i=1n∑j=1m2gcd(i,j)−1\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} 2gcd(i, ...
- [NOI2010]能量采集
469. [NOI2010]能量采集 ★★☆ 输入文件:energy2010.in 输出文件:energy2010.out 简单对比 时间限制:1 s 内存限制:512 MB [问题描 ...
- P1447 [NOI2010] 能量采集
P1447 [NOI2010] 能量采集 题意: 如果一棵植物与能量汇集机器(坐标为0,0)连接而成的线段上有 k 棵植物,则能量的损失为 2k + 1 给你一个n*m的植物园,问能量损失是多少 1& ...
- BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
一个点(x, y)的能量损失为 (gcd(x, y) - 1) * 2 + 1 = gcd(x, y) * 2 - 1. 设g(i)为 gcd(x, y) = i ( 1 <= x <= ...
- bz2005 2005: [Noi2010]能量采集 数学题
2005: [Noi2010]能量采集 Time Limit: 10 Sec Memory Limit: 552 MB Submit: 2494 Solved: 1475 [Submit][Sta ...
最新文章
- 实时车道检测--A Novel Vision-Based Framework for Real-Time Lane Detection and Tracking
- iot架构 mqtt netty_Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
- linux换服务器登录插件,Linux服务器登录、注销 用户和用户组管理
- 【快乐水题】509. 斐波那契数
- Spring MVC集成Tiles使用方法
- 微信扫一扫识物的技术揭秘:抠图与检索
- ###《Effective STL》--Chapter3
- 关联规则算法Apriori的学习与实现
- 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
- 华为 eNSP模拟器安装教程
- 小米路由器设置无线中继模式
- 一招教你电脑微信双开
- 干货!详解服务器端和移动端性能测试指标
- 中山大学2021计算机考研复试线,2021中山大学研究生复试分数线
- Android模拟器启动报错:gpu found. vendor id 1002 device id 0x
- matlab randn 范围,如何用matlab编写randn函数?
- Jetpack-MVVM-高频提问和解答,附带学习经验
- python点图_Python | 点图
- 四舍六入五成双的意思
- 老板到底能不能,监控到电脑版微信聊天?