CF1406E Deleting Numbers

news/2024/10/8 18:35:02/文章来源:https://www.cnblogs.com/dcytrl/p/18452236

题意简述

交互题,给定集合 \(S=\{1,2,\cdots,n\}\) 和一个隐藏的数 \(m\),你需要使用不超过 \(10^4\) 次操作猜出 \(m\),操作类型如下:

  • A x,查询在 \(S\) 中是 \(x\) 的倍数的数的个数。
  • B x,查询在 \(S\) 中是 \(x\) 的倍数的数的个数,并把这些数删去,但是 \(m\) 不会被删去。
  • C x,表示你猜的 \(m=x\)

\(1\le m\le n\le 10^5\)

分析

给出一个常数:\(p(10^5)=9592,r(10^5)\approx9700\)\(p(n)\) 指的是 \([1,n]\) 的质数个数,\(r(n)\) 指的是 \([1,n]\) 的质数。

考虑到每个 \(m\) 都可以写成唯一分解的形式 \(\prod_i p_i^{c_i}\),考虑枚举每一个 \(p_i\),使用一次 B 操作删去 \(p_i\) 的所有倍数,然后查询此时 \(p_i\) 倍数个数。若为 \(1\),那么 \(p_i\)\(m\) 的其中一个质因子,暴力枚举每一个 \(p_i^k\) 使用 A 操作就能得到 \(m\) 在这个质因数下的具体指数。

但这样的询问次数是 \(p(n)+r(n)\approx19200>10^4\),不能通过。

考虑优化,一个很经典的套路是对质因子根号分治,设阈值 \(B=\sqrt n\)\(\le B\) 的质因子可以向之前那样暴力计算,而质数幂的数量大概在 \(\dfrac{B}{\ln B}\times \log_{p} n=O(B)\) 量级,次数较小,可以承受。

\(m\) 至多有一个 \(>B\) 的质因子,若 \(m\) 不为 \(1\) 或者 \(>B\) 的质数,那么我们只需要对每个质因子使用 A 操作,若 \(m\) 包含某个质因子,那么在对这个质因子使用 A 操作返回的答案是 \(2\),那么只需要 \(p(n)\) 次操作就可以求出答案。

但如果 \(m\)\(1\) 或者 \(>B\) 的质数,无论对那个质因子操作返回的答案都是 \(1\),这种情况下我们只能使用暴力方案求解,次数还是爆炸。

发现对每个质因子都使用 A 操作 check 太浪费了,考虑把多个质因子批量删除之后一起使用 A 操作 check。对质因子分块,设块长 \(C=100\),考虑逐块查询,将块内质因子用 B 操作删掉后查询 A 1,若返回的答案不为 剩余的质因子数+1,那么 \(m\) 落在这个块内,暴力 check 即可。次数为 \(B+p(n)-p(B)+C+\frac{p(n)}{C}\le 10^4\),可以通过。

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

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

相关文章

宝塔平替:1Panel-新一代的 Linux 服务器运维管理面板(附优惠码/推荐码)

什么是1Panel 1Panel是一款开源,现代化的新一代的 Linux 服务器运维管理面板!1Panel可以帮你实现的功能: 高效管理:用户可以通过 Web 图形界面轻松管理 Linux 服务器,实现主机监控、文件管理、数据库管理、容器管理等功能; 快速建站:深度集成开源建站软件 WordPress 和 …

大模型应用开发初探 : 基于Coze创建Agent

Coze(扣子)是字节跳动公司开发的新一代AI应用开发平台,使用这个AI应用开发平台,无论你是否有编码基础,都可以快速搭建基于大语言模型的各类AI Bot,还可以将Bot发布到其他渠道。对于一个AI Agent而言,最重要的能力就是任务规划、调用工具、知识库 和 记忆能力,而这些能力…

了解final关键字在Java并发编程领域的作用吗?

在Java并发编程领域,final关键字扮演着一个至关重要的角色。虽然很多同学熟悉final用于修饰变量、方法和类的基本用法,但其在并发环境中的应用和原理却常常被忽视。final关键字不仅仅是一个简单的修饰符,它在多线程编程中确保对象状态的可见性和不变性,这对于构建线程安全的…

20222325 2024-2025-1 《网络与系统攻防技术》实验一实验报告

1.实验内容缓冲区溢出基本知识:堆栈、函数调用。 shellcode技术以及其在各平台的运用与防御。 BOF攻击防御技术。2.实验目标 本次实践的对象是一个名为pwn1的linux可执行文件。 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。 该程序同时包含…

用AI构建小程序可行吗?

AI工具在软件开发中扮演着越来越重要的角色,它可以帮助开发者提高效率、增强软件功能、降低开发门槛。通过合理选择和应用AI工具,可以显著提升软件开发的质量和效率。随着移动互联网的快速发展,多端应用的需求日益增长。为了提高开发效率、降低成本并保证用户体验的一致性,…

PyQt5 使用 QLabel 实现图像 360度 不间断旋转

PyQt5 使用 QLabel 实现图像 360度 不间断旋转 当我们需要实现让一个图像 360度 旋转时,比如:音乐播放器中播放时,歌曲封面的旋转效果,你可以尝试使用下面的方法 代码结构 本文中全部代码全在test_QLabel_whirling.py这一个文件中编码,步骤中有变动的地方会注释标注,无改…

systemverilog笔记

变量类型变量名 状态数 是否带符号 比特数logic 4 无 1bit 2 无 1byte 2 有 8shortint 2 有 16int 2 有 32longint 2 有 64integer 4 有 32time 4 无 64$isunknown(表达式):在表达式任意位出现X或者Z时返回1。 数组 数组初始化 使用单引号加大括号数组遍历 $size(数组)会返回

DSP概述及应用——TMS320DM6437ZDU4、TMS320DM6437ZWT6、TMS320DM6437ZWT7数字媒体处理器

TMS320DM6437采用基于超标量架构的C64x+内核,具有高效的乘法累加单元和多格式指令集,能够在单个时钟周期内执行两条指令,大大提高了运算速度和效率。概述:TMS320DM6437是一款DSP芯片,具有强大的处理能力和丰富的功能模块。 TMS320DM6437采用基于超标量架构的C64x+内核,具…

csp-s模拟10

rank 31,垫底了,T1 0pts,T2 18pts,T3 0pts,T4 50pts 状态有点不好,策略有问题,T4是可以切的,但是不知道为什么弃了。T1不会线性基寄。T3 奇怪结论题,T2 结论题。 在猜结论上还是不行。 T1 欧几里得的噩梦 用到了线性基线性无关的性质,将两个数连边,把环去掉,并查集判…

Kubernetes的Pod调度:让你的应用像乘坐头等舱!

一、Kubernetes 中 Pod 调度的重要性 在 Kubernetes 的世界里,Pod 调度就像是一个繁忙的交通指挥官,负责把小车(也就是我们的 Pod)送到最合适的停车位(节点)。调度不仅关乎资源的合理利用,还关乎应用的“生死存亡”,下面让我们来看看为什么调度这么重要。资源优化: 想象…

二叉树的概念、表示法、性质和操作

本文记述了二叉树的基本概念、表示法、性质和操作。 ◆ 概念 二叉树(以下也简称树)是一种存放多个元素的数据结构。每个元素称为结点,每个结点有左、右两个链接,每个链接要么指向其他结点,要么是空链接。 某个结点是它的左、右链接指向的结点的父结点,被指向的结点是其父…

Springboot中统一启动多个socketIO

前言 这篇随笔属实没想到一个好名字,起因是在项目中遇到了一个springboot服务会发出多个socket服务的场景,而且我们使用的是socketIO服务,为了减少调试工作和重复的开发工作,让开发在项目中专注于业务编写,因此封装了一个在启动springboot服务时,自动创建socketIONamespa…