首页 > 其他分享 >做题计划

做题计划

时间:2023-10-26 15:33:36浏览次数:29  
标签:lfloor right frac sum rfloor 计划 left

年更选手报道!

luogu P3455 [POI2007] ZAP-Queries

莫比乌斯反演。

令:\(a\le b\)

求:

\[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[\gcd(i,j)=x] \]

消掉 \(x\):

\[=\sum\limits_{i=1}^{\left\lfloor\frac{a}{x}\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\frac{b}{x}\right\rfloor}[\gcd(i,j)=1] \]

根据莫比乌斯的定义:

\[=\sum\limits_{i=1}^{\left\lfloor\frac{a}{x}\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\frac{b}{x}\right\rfloor}\sum_{d|\gcd(i,j)} \mu(d) \]

改成和的形式:

\[=\sum\limits_{i=1}^{\left\lfloor\frac{a}{x}\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\frac{b}{x}\right\rfloor}\sum_{d=1}^{\left\lfloor\frac{a}{x}\right\rfloor} \mu(d) \times [d | \gcd(i,j)] \]

移项:

\[=\sum\limits_{d=1}^{\left\lfloor\frac{a}{x}\right\rfloor} \mu(d)\sum\limits_{i=1}^{\left\lfloor\frac{b}{x}\right\rfloor}\sum_{j=1}^{\left\lfloor\frac{a}{x}\right\rfloor} \times [d | \gcd(i,j)] \]

显然 \(d|i,d|j\),又因为满足条件的 \(i\) 在 \(1 \sim \left\lfloor\frac{a}{x}\right\rfloor\) 中出现 \(\left\lfloor\frac{a}{x \times d}\right\rfloor\) 次,\(j\) 在 \(1 \sim \left\lfloor\frac{b}{x}\right\rfloor\) 中出现 \(\left\lfloor\frac{b}{x \times d}\right\rfloor\) 次,所以:

\[=\sum\limits_{d=1}^{\left\lfloor\frac{a}{x}\right\rfloor} \mu(d)\left\lfloor\frac{a}{x \times d}\right\rfloor\left\lfloor\frac{b}{x \times d}\right\rfloor \]

然后可以预处理出 \(\mu\) 的前缀和,另外的整除分块即可。时间复杂度 \(\mathcal{O(m \log \sqrt{n})}\)。

点击查看代码
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 5e4;

int pri[N + 100], cnt, mu[N + 100], a, b, x, n, sumu[N + 100];
bool vis[N + 100];

void solve() {
	cin >> a >> b >> x;
	if (a > b) {
		swap(a, b);
	}
	a /= x;
	b /= x;
	int ans = 0;
	for (int l = 1, r; l <= a; l = r + 1) {
		r = min(a / (a / l), b / (b / l));
		ans += (a / l) * (b / l) * (sumu[r] - sumu[l - 1]);
	}
	cout << ans << endl;
}

void init() {
	mu[1] = 1;
	vis[1] = 1;
	for (int i = 2; i <= N; i++) {
		if (!vis[i]) {
			pri[++cnt] = i;
			mu[i] = -1;
		}
		for (int j = 1; j <= cnt && i * pri[j] <= N; j++) {
			vis[i * pri[j]] = 1;
			if (i % pri[j] == 0) {
				mu[i * pri[j]] = 0;
				break;
			} else {
				mu[i * pri[j]] = mu[i] * mu[pri[j]];
			}
		}
	}
	for (int i = 1; i <= N; i++) {
		sumu[i] = sumu[i - 1] + mu[i];
	}
}

signed main() {
	init();
	cin >> n;
	while (n--) {
		solve();
	}
	return 0;
}

标签:lfloor,right,frac,sum,rfloor,计划,left
From: https://www.cnblogs.com/ydq1101/p/17789523.html

相关文章

  • 测试计划模板一
    测试计划修订历史记录版本日期AMD修订者说明1.0XXXX年XX月XX(A-添加,M-修改,D-删除)目录1.        简介..41.   1目的...41.   2背景...41.3范围...42.   测试参考文档和测试提交文档...52.1测试......
  • NOIP冲刺之超市T2计划
    超市T2计划总结目录超市T2计划总结声明:刷题:三国游戏:T1尼克的任务:T2卖萝卜:T1剔除多余括号:T2引水入城:T3MediumDesign:T3总结:声明:本贴用于总结对于csps-noipT2左右难度的题目。会选择一些NOIP的题目,或者是codeforces过的人数在1500~3000的题目。然后分为了T1-T66个级别也......
  • P4155 [SCOI2015] 国旗计划
    按套路破环成链,要注意右端点小于左端点的区间跨越了\(N\to1\)。假设钦定了士兵\(i\),接下来肯定贪心地选择左端点小于等于当前右端点的右端点最大的下一个区间。因为区间不存在包含关系,按右端点从小到大排序后形式化地讲就是找到最大的\(j\)使得\(C_j\leqD_i\)。直接做是......
  • Cygwin/WSL调用Windows schtasks命令操作Windows计划任务系列函数(查询、启用、禁用、
    新增、删除、查询任务计划#wintask-query#根据任务名称关键词查询Windows计划任务#wintask-del#根据任务名称关键词删除Windows计划任务,也可以传递计划任务完整路径#wintask-run#根据任务名称关键词立即运行Windows计划任务#wintask-enable#根据任务名称......
  • 前端反卷计划-组件库-01-环境搭建
    Hi,大家好!我是程序员库里。今天开始分享如何从0搭建UI组件库。这也是前端反卷计划中的一项。在接下来的日子,我会持续分享前端反卷计划中的每个知识点。以下是前端反卷计划的内容:目前这些内容持续更新到了我的学习文档中。感兴趣的欢迎一起学习!环境搭建组件库名字因为......
  • 华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)
    十一、计划任务与Queue队列实践:1.计划任务:Linux环境下定时或者周期性的执行一些任务通常由cron这个守护进程来完成,这是一个系统自带的相对也比较方便的系统工具。sudoapt-getinstallcron//默认自带目录结构:目录说明/var/spool/cron/crontabs用户调度任务目录,是每个用户包括r......
  • windows Server【开机启动和任务计划程序】实现服务器重启后项目自启动
    1.说明有些时候我们希望计算机开机后就启动一些服务或应用程序。2.开机启动使用Win+R调出运行,输入:1️⃣shell:startup用户开机自启动(程序开机自启动只针对当前登录的用户)打开的目录为C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Sta......
  • Oracle获取执行计划的七种方法以及使用场景
    一.explainplanforselect*fromt1,t2 wheret1.id=t2.id andt1.idin(5,6);select*fromtable(dbms_xplan.display());优点无需真正执行,快捷方便缺点1.没有输出运行时的相关统计信息(产生多少逻辑读,多少次物理读,多少次递归调用等);2.无法判断是处理了多少行;3.无法判断表被......
  • Linux20--定时任务之:crond计划任务
    1定时任务介绍1.1定时任务含义和用途#含义设定某个日期或时间周期性执行指令比如设定一个闹铃,叫你每天早上7点钟起床等#用途定期备份数据,定期执行脚本程序1.2什么是Crond?#Crond是Linux系统中用来定期执行命令或脚本的一种服务软件一般情况下,安装完CentOS操......
  • 安防监控国标GB28181平台LiteCVR修改录像计划的等待时间较长,该如何解决?
    我国在智能视频安防监控领域相较国外起步较晚,但随着近些年互联网等技术的发展,我国在该领域迅猛发展,取得了不错的成果。有用户反馈,GB28181视频监控平台LiteCVR修改录像计划的等待时间较长。今天我们来针对这个案例做一个分析和讲解。根据反馈我们立即进行排查,发现其实修改单个通......