3.26 CW 模拟赛 T1. 公约数神庙

news/2025/3/29 21:43:08/文章来源:https://www.cnblogs.com/YzaCsp/p/18794461

前言

补题就好好补, 进入状态

圣剑忘在寝室了, 我咧个豆, 下午再来一次检查一套连招给我送回实外
希望 \(\rm{deepseek}\) 解决了服务器繁忙问题\((\)然后就繁忙了\()\)

思路

首先不难想到的是暴力建图然后跑传递闭包
但是这样复杂度是 \(\mathcal{O}(n^2)\) 的, 只能趋势

发现如果有优化建图的方法, 那么复杂度就可以优化到 \(\mathcal{O}\left(\dfrac{n^2}{w}\right)\), 看上去是很好的
那么怎么优化建图呢?

首先我们考虑把它当做子问题处理

子问题

分析题目

建图在一个序列 α\alpha 的基础上
倘若 gcd(αi,αj)>1\gcd(\alpha_i, \alpha_j) > 1 则连边 iji \to j

αi1000\alpha_i \leq 1000, 求建图在 O(n2)\mathcal{O} (n^2) 以下的方法

找初步性质

首先 gcd\rm{gcd} 问题

  • gcd\rm{gcd}
    • 尝试计算 xgcdx | \textrm{gcd}gcd\textrm{gcd} 个数从而计算出 x=gcdx = \textrm{gcd}gcd\textrm{gcd} 个数
    • 指数拆分法
    • 钦定 gcd\rm{gcd} 的值, 再去找性质
      • 常常找 gcd\rm{gcd} 的倍数

发现都没有用, 再去找性质
考虑 gcd(αi,αj)>1\gcd(\alpha_i, \alpha_j) > 1 的本质是存在质数 xαi,xαjx | \alpha_i, x | \alpha_jx>1x > 1
因此如果我们考虑 10001000 以内的 π=168\pi = 168 个质数, 可以在 O(nπ)\mathcal{O} (n \pi) 内建出 π\pi 条可达链, 在链 lil_i 上, 你只要能走到 li,jl_{i, j} 就可以走到 li,kjl_{i, k \geq j}

转化用于做题

那么怎么去判断可达性?
不难发现对于点 vv, 其最多在 44 条链上
那么我们有两种方法去做

似乎可以直接维护传递闭包了

但是问题出在 00 上, 关于 00 怎么去做呢?
如果出现了 00, 其被视为 10001000 内所有质因数之积, 严重影响了优化建图
于是我们考虑对 00 进行特殊处理
分讨

  • x=yx = y 显然可行
  • αx=αy=1\alpha_x = \alpha_y = 1 显然不可行
  • αx=αy=0\alpha_x = \alpha_y = 0 显然判断中间是否有 >1> 1 的数
  • 两数之间如果有 00 显然可行

似乎解决了, 但是你发现 O(n2w)\mathcal{O}\left(\dfrac{n^2}{w}\right) 的空间复杂度成为了瓶颈, 睡觉
于是考虑分开对链处理

bitset\rm{bitset}

问题出在不能对点处理, 考虑把链当做整体处理
不难发现如果把询问按照 xx 从大到小排序, 我们可以离线下来询问

于是根据询问, 我们动态维护每一条链的可达后缀, 然后做一下就好了

利用拓扑序 dp\rm{dp}

发现可达后缀可以用单点表示
我们发现我们只需要维护从点 ii 出发, 每条链上最前能走到哪
fi,pf_{i, p} 表示从 ii 出发, 在 pp 链上能走到的最近位置
fi,p={iαipminikfk,pαip\begin{align*}f_{i, p} = \begin{cases} i & \alpha_i \mid p \\ \min\limits_{i \to k} f_{k, p} & \alpha_i \nmid p\end{cases}\end{align*}

本质上是对 bitset\rm{bitset} 的优化

总结

不互质的神奇性质
神奇优化建图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906303.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20242312 2024-2025-2 《Python程序设计》实验一报告

20242321 2024-2025-2 《Python程序设计》实验报告 课程:《Python程序设计》 班级: 2423 姓名: 周梓濠 学号:20242312 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境,配置VSCode; 2.配置gitee仓库,掌握git技能; 3.…

Tita:OKR 与项目管理、绩效一体化,助力企业实现目标驱动型发展

在当今竞争激烈的商业环境中,企业要想脱颖而出,实现可持续发展,明确目标、高效执行以及精准衡量结果至关重要。Tita 作为一款先进的管理平台,通过将 OKR(目标与关键成果法)与项目管理、绩效一体化相结合,为企业提供了一套完整的目标管理与执行解决方案,助力企业 “树目…

R语言绘图笔记—火山图

做个R语言绘图笔记,方便以后查看。 火山图:library(ggplot2) p1 <- ggplot(res, aes(x =log2FoldChange, y=-log10(pvalue), colour=sig)) + geom_point(size=2, shape = 16) + # 设置节点大小# 设置节点对应颜色scale_color_manual("significant" ,values=c(&…

git拉取代码到本地

1.先登入git,然后点击克隆,复制http地址:2.打开终端,输入 git clone http://xxxxxx3.然后在这个文件夹下就能看到复制的代码文件了4.可以把这个文件剪切到自己想要的路径下 5.pycharm打开就能用了

20232425 实验一 《python程序设计》实验报告

20232425 2024-2025-2 《Python程序设计》实验1报告 课程:《Python程序设计》 班级: 2324 姓名: 刘润民 学号:20232425 实验教师:王志强老师 实验日期:2025年3月12日 必修/选修: 公选课 一、实验内容 1、熟悉Python开发环境; 2、练习Python运行、调试技能;(编写书中的…

软件产品开发中常见的10个问题及处理方法

常见的10个问题 产品开发中常见的10个问题思维导图需求相关 1. 需求不明确 在日常工作中,需求来源于用户、老板、客户、竞品分析、业务部门、产品经理等,这些人或部门会提出需求,因为他们不是产品经理,提出的需求可能是一句话、一个想法这些简单的需求点,这些需求模糊且不…

025 登录页-记住密码的功能实现

这个页面这样写 这个页面这样写 这里定义两个常量 这里用常量代替 记住密码的勾选这样写

matplotlib之柱状图

# 柱状图 import matplotlib.pyplot as pltmovie_name = [雷神3:诸神黄昏,正义联盟,东方快车谋杀案,寻梦环游记,全球风暴,降魔传,追捕,横坐标] x = range(len(movie_name)) y = [73853,57767,22354,15969,14839,8725,8716,8318]plt.figure(figsize=(20,8), dpi=100) bars = plt…

matplotlib之散点图

# 散点图 import matplotlib.pyplot as plt import random from pylab import mpl # 设置显示中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"]# 准备数据 x=[225.98,247.07,253.14,457.85,241.58,301.01, 20.67,288.64…

Jmeter 连接hive配置

环境:部署的hive 版本是4.0.0 jmeter 连接hive时连接驱动跟安装的hive版本有极大关系,比如说hive 版本是4.0.0版本,在jmeter的测试计划【test plan】中添加的hive-jdbc驱动如果是hive-jdbc-3.1.3-standalone.jar版本的话会连接失败,只能添加hive 4.0.0 或以上的版本。如hiv…

北京智和信通正式发布全球语言版本智能运维平台,开启网络运维国际视野

北京智和信通正式推出全球语言版本,在自研中文版运维平台的基础上,全面实现对汉语、英语、日语、韩语、法语、德语、俄语、印地语、西班牙语、阿拉伯语、葡萄牙语等语言界面的支持,让运维工作开启全球化高效协作的大门 数字化浪潮席卷全球,网络运维的边界已超越地域…