HYSZB PROBLEM B(mobius反演+分块+容斥原理)
来源:互联网 发布:淘宝蚂蚁花呗激活教程 编辑:程序博客网 时间:2024/06/16 12:33
这道题和hdu1965思路基本类似,
http://blog.csdn.net/abc13068938939/article/details/52198163
mobius反演得出的结果是(过程在上面的博文中有介绍)
1< =i< =m和1< =j< =n中gcd(i,j)=k的个数
令m~=m/k, n~=n/k。且不妨设m < = n。
f(1)=Sigma(d=1 : m) u(d)* ((m~)/d) *((n~)/d)。
m/=k,n/=k;if(m>n) swap(n,m);LL res=0ll;for(int i=1;i<=m;i++) res+=u(i)*(m/i)*(n/i);
然后a< =i< =b和c< =j< =d中gcd(i,j)=k的个数=
solve(b/k,d/k)-solve(b/k,(c-1)/k)-solve((a-1)/k,d/k)+solve((a-1)/k,(c-1)/k)。
其中solve(n,m)表示1< =i< =m和1< =j< =n中gcd(i,j)=1的个数。
但是这是会超时的,
事实上m/i它在一小块内是不会变的,比如
m=100 i=26:33,m/i均等于3,也就是这一部分可以合着计算。
分块不熟可以看这道题bzoj1257(余数之和)
#include <iostream>#include <stdio.h>#include <algorithm>#include <stdlib.h>#include <stack>#include <vector>#include <string.h>#include <queue>#define msc(X) memset(X,-1,sizeof(X))#define ms(X) memset(X,0,sizeof(X))typedef long long LL;using namespace std;const int MAXN=50005;int sum[MAXN+10],mu[MAXN+10];void getMobius(void){ for(int i=1;i<=MAXN;i++) { int target=(i==1?1:0); int delta=target-mu[i]; mu[i]=delta; for(int j=i+i;j<=MAXN;j+=i) mu[j]+=delta; }}LL solve(int x,int y){ LL res=0ll; for(int i=1,r;i<=x&&i<=y;i=r+1) { int dx=x/i,dy=y/i; r=min(x/dx,y/dy); res+=(LL)(sum[r]-sum[i-1])*dx*dy; } return res;}int main(int argc, char const *argv[]){ int n; cin>>n; ms(mu); getMobius(); sum[0]=0; for(int i=1;i<=MAXN;i++) sum[i]=sum[i-1]+mu[i]; while(n--){ int a,b,c,d,k; scanf("%d %d %d %d %d",&a,&b,&c,&d,&k); a=(a+k-1)/k,c=(c+k-1)/k;//向上取整 b/=k,d/=k;//向下取整 LL ans=solve(b,d)-solve(a-1,d)-solve(b,c-1)+solve(a-1,c-1); printf("%lld\n",ans ); } return 0;}
0 0
- HYSZB PROBLEM B(mobius反演+分块+容斥原理)
- BZOJ 2301: [HAOI2011]Problem b(莫比乌斯反演 + 容斥原理 + 分块优化)
- [BZOJ 2301] Problem b【莫比乌斯反演/容斥原理/分块】
- BZOJ 2301: [HAOI2011]Problem b(莫比乌斯反演,分块,容斥)
- BZOJ 2301 Problem b (莫比乌斯反演+区间容斥+分块)
- BZOJ 2301([HAOI2011]Problem b-mobius反演)
- [莫比乌斯反演+容斥+分块求和] BZOJ2301: [HAOI2011]Problem b
- SPOJ PGCD (mobius反演 + 分块)
- HDU-1695-GCD(Mobius反演/容斥)
- BZOJ 2301 [HAOI2011]Problem b (容斥+莫比乌斯反演+分块优化 详解)
- BZOJ 2301 HAOI2011 Problem b 容斥原理+莫比乌斯反演
- BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演+容斥原理
- BZOJ 2301: [HAOI2011]Problem b(容斥原理+莫比乌斯反演)
- 2301: [HAOI2011]Problem b 莫比乌斯反演+前缀+容斥原理
- SPOJ PGCD(mobius反演+分块+线性筛)
- 【hdu 1695 】GCD 【容斥+欧拉 or mobius反演】
- BZOJ 2301 Problem b(莫比乌斯反演+容斥)
- 洛谷 P2522 [HAOI2011]Problem b(莫比乌斯反演+容斥)
- 基于SSH实现管理系统之框架整合篇 4 Struts整合Spring
- 2032. 数字游戏 (Standard IO)
- Struts2-1
- AFNnetworking详解
- 基于SSH实现管理系统之框架整合篇 5 Spring整合Hibernate框架
- HYSZB PROBLEM B(mobius反演+分块+容斥原理)
- Taobao数据库这5年(20120401)
- 网络编程(3)TCP
- iOS添加边缘手势( UIScreenEdgePanGestureRecognizer)实现侧滑效果
- 面试问题 面向对象和面向过程编程的一些区别
- Tasks Planner简介
- 解决ScrollView嵌套RecyclerView的冲突,非常简单,拿去可以直接用
- hdu4714树形DP,用c++交别用g++交
- Android 初学 图片切换 Image switching and showing