【题解】【HAOI2011】Problem b
\(Luogu2522\)
题目大意:求下面式子的值:
\]
这个东西直接求不好求,考虑差分,从\([1,n]\)的范围求,然后相减。
那么考虑:
\]
同时除以\(k\):
\]
枚举\(d|gcd(i,j)\),套上反演套路,并且将\(d\)提到前面:
\]
\]
\]
这玩意到此结束,后面数论分块即可,\(O(\sqrt{n})\).
套一个差分即可。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int MAXN=6e4+10;
int n,m;
int prime[MAXN],mu[MAXN];
int fg[MAXN],tot,sum[MAXN];
void screen(){
	mu[1]=1;
	for(int i=2;i<=MAXN;++i){
		if(!fg[i])prime[++tot]=i,mu[i]=-1;
		for(int j=1;j<=tot&&i*prime[j]<=MAXN;++j){
			fg[i*prime[j]]=1;
			if(i%prime[j]==0){
				mu[i*prime[j]]=0;
				break;
			}
			mu[i*prime[j]]=-mu[i];
		}
	}
	for(int i=1;i<=MAXN;++i)sum[i]=sum[i-1]+mu[i];
}
int solve(int x,int y,int k){
	int ans=0,M;
	M=min(x,y);
	for(int l=1,r;l<=M;l=r+1){
		r=min(x/(x/l),y/(y/l));
		ans+=(x/(l*k))*(y/(l*k))*(sum[r]-sum[l-1]);
	}
	return ans;
}
int main(){
	scanf("%d",&n);
	screen();
	for(;n;n--){
		int k,a,b,c,d;
		scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
		printf("%d\n",solve(b,d,k)-solve(a-1,d,k)-solve(b,c-1,k)+solve(a-1,c-1,k));
	}
	return 0;
}
												
											【题解】【HAOI2011】Problem b的更多相关文章
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
		
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
 - bzoj 2301: [HAOI2011]Problem b
		
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Submit: 3757 Solved: 1671 [Submit] ...
 - HAOI2011 problem b
		
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 1047 Solved: 434[Submit][ ...
 - BZOJ 2298: [HAOI2011]problem a 动态规划
		
2298: [HAOI2011]problem a Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnli ...
 - 【BZOJ2302】[HAOI2011]Problem C(动态规划)
		
[BZOJ2302][HAOI2011]Problem C(动态规划) 题面 BZOJ 洛谷 题解 首先如果\(m=0\)即没有特殊限制的话,那么就和这道题目基本上是一样的. 然而这题也有属于这题的性 ...
 - [POI2007]ZAP-Queries  && [HAOI2011]Problem b 莫比乌斯反演
		
1,[POI2007]ZAP-Queries ---题面---题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$$ ...
 - 【BZOJ2298】[HAOI2011]problem a DP
		
[BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...
 - [luogu] P2519 [HAOI2011]problem a (贪心)
		
P2519 [HAOI2011]problem a 题目描述 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同 ...
 - BZOJ 2301: [HAOI2011]Problem b  莫比乌斯反演
		
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 1007 Solved: 415[Submit][ ...
 - 2301: [HAOI2011]Problem b
		
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4164 Solved: 1888[Submit] ...
 
随机推荐
- 面试【JAVA基础】类加载机制
			
1.类加载过程 1.1.加载 查找和导入class文件. 1.2.链接 验证 检验载入的class文件的正确性,完整性. 准备 给类的静态变量分配存储空间,会赋对象类型的默认值. 解析 将class常 ...
 - TinkPHP5.1开发注意事项
			
1.新下载的框架文件,开发前先开启调试配置 config目录下app.php文件 // 应用调试模式 'app_debug' => true, 2.每新建一个方法,都要 ...
 - 剑指 Offer 19. 正则表达式匹配
			
题目描述 请实现一个函数用来匹配包含'. '和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次).在本题中,匹配是指字符串的所有字符匹配整个模式. ...
 - 用安卓 WebView 做一个“套壳”应用
			
前言 目前手机应用市场上的 APP 类型主要为以下两种: Native App(原生应用):直接针对平台(Android.iOS 等手机系统)进行开发,属于性能最优的方案,也是开发成本最大的方案. H ...
 - ZT:15 个你非了解不可的 Linux 特殊字符
			
https://os.51cto.com/art/202003/611595.htm 不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有 ...
 - python之csrf简介
			
django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有分为全 ...
 - 掌控安全less6 靶场简易--盲注
			
1.判断是否存在sql注入 http://injectx1.lab.aqlab.cn:81/Pass-11/index.php?id=1" and "1"=" ...
 - [算法]体积不小于V的情况下的最小价值(0-1背包)
			
题目 0-1背包问题,问要求体积不小于V的情况下的最小价值是多少. 相关 转移方程很容易想,初始化的处理还不够熟练,可能还可以更简明. 使用一维dp数组. 代码 import java.util.Sc ...
 - [LeetCode] 139. 单词拆分(DP)
			
题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中没 ...
 - Linux中逻辑卷(LV)的创建、增大和减小
			
首先说一下在缩小逻辑卷的时候要注意的问题:第一步使用resize2fs命令更改文件系统的容量:第二步使用lvreduce命令减小逻辑卷的容量.这两个顺序千万不要搞反了,而且要保证缩减后的逻辑卷容量大于 ...