CF1796C C. Maximum Set 题解 排列组合

news/2024/9/15 22:38:29/文章来源:https://www.cnblogs.com/quanjun/p/18395692

题目链接:https://codeforces.com/problemset/problem/1796/C

题目大意:

定义一个集合 \(S\) 是合法的,当且仅当集合中任意两个整数 \(x\)\(y\) 满足 \(x\)\(y\) 整除或 \(y\)\(x\) 整除。

\(t\) \((1\le t\le 2\times 10^4)\) 次询问,每次给你两个整数 \(l,r\) \((1\le l\le r \le 10^6)\),每次询问给出两个回答,第一个是在集合 \([l,r]\) 中选出整数组成的合法集合的最大大小,第二个是大小最大的合法集合的个数。

解题思路:

这个倍数关系肯定只有 \(2\) 倍或者 \(3\) 倍的关系。

因为 \(4\) 倍关系(即如果有一个数 \(x\) 是另一个数 \(y\) 的四倍),因为 \(4 = 2 \times 2\),则我们其实可以再加入一个 \(2y\)

其次 \(3\) 倍关系最多只有一个,因为如果有两个数 \(3\) 倍关系(\(3 \times 3 = 9 \gt 8 = 2 \times 2 \times 3\)),我们就可以得到三个数他们之间是 \(2\) 倍关系。

首先,对于一次查询的 \(l\)\(r\),按照 \(l, 2l, 4l, 8l, \ldots\) 的规则取数肯定能够得到最多的数字。

我们可以按照这个逻辑确定我们最多能取的数的个数,我们令这个数为 \(m+1\)。则此时最大的数恰好是最小的数的 \(2^m\),即恰好有 \(m\)\(2\) 倍的关系。

然后我们可以分析两种情况的集合数量。第一种是 \(m\)\(2\) 倍关系,第二种是 \(m-1\)\(2\) 倍关系 + \(1\)\(3\) 倍关系。

\(m\)\(2\) 倍关系

设此时最小的数为 \(x\),则选择的 \(m+1\) 个数为:\(x, 2x, 4x, \ldots, 2^mx\)

\(x\) 能取的最小的数值很明显是 \(l\),能取的最大的数字是 \(\lfloor \frac{r}{2^m} \rfloor\)

所以这一部分一共有 \(\lfloor \frac{r}{2^m} \rfloor - l + 1\) 个不同的选择方案。

\(m-1\)\(2\) 倍关系 + \(1\)\(3\) 倍关系

同样,设此时最小的数为 \(x\),则只有 \(x \times 2^{m-1} \times 3 \le r\)\(m \gt 0\)(因为要腾出一个 \(2\) 倍关系变为 \(3\) 倍关系)时才有选择方案。

此时 \(x\) 能取的最小的数仍然是 \(l\),能取的最大的数是 \(\lfloor \frac{r}{2^{m-1} \times 3} \rfloor\)

所以,最小值 \(x\)\(\lfloor \frac{r}{2^{m-1} \times 3} \rfloor - l + 1\) 种不同的选择方案。

然后 \(3\) 倍关系放到 \(m\) 个倍数关系中,一共有 \(C_m^1 = m\) 种方案,最终的方案数还要乘上 \(m\)

所以这一部分一共有 \(\lfloor \frac{r}{2^{m-1} \times 3} \rfloor - l + 1\) 种不同的选择方案。

特殊情况

要注意一种特殊情况,就是 \(m = 0\) 的情况,即最多只能选 \(m + 1 = 1\) 个数的情况,此时 \([l, r]\) 范围内任何一个数都可以选,选择方案数为 \(r - l + 1\)

示例程序:

#include <bits/stdc++.h>
using namespace std;
int T, l, r;void cal(int l, int r) {int m = log2(r/l);if (m == 0) { // 特判:只能选一个数的情况cout << 1 << " " << r - l + 1 << endl;return;}int ans = r / (1<<m) - l + 1; // 这一部分是m个2倍关系的方案数if ((l << m-1) * 3 <= r)ans += m * ((r >> m-1) / 3 - l + 1); // 这一部分加的是m-1个2倍关系+1个3倍关系的方案数cout << m+1 << " " << ans << endl;
}int main() {cin >> T;while (T--) {cin >> l >> r;cal(l, r);}return 0;
}

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

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

相关文章

2024软件工程博客园第一次作业

这个作业属于哪个课程 首页 - 软件工程2024 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)这个作业要求在哪里 2024秋软件工程个人作业(第一次) - 作业 - 软件工程2024 - 班级博客 - 博客园 (cnblogs.com)这个作业的目标 搭建自己的博客,写下自己的个人情况和愿景学号 1022…

不可不知的WPF形状(Shape)

在WPF开发中经常需要进行绘制图形,可以利用Shape类型绘制基本的形状,而且Shape派生自FrameworkElement,属于UI元素范畴,可以直接利用XAML进行绘制。本文通过一些简单的小例子,简述如何通过Shape类绘制形状,仅供学习分享使用,如有不足之处,还请指正。在WPF开发中经常需要…

软件工程第一次个人作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标 学会使用Aigc工具生成个人logo,搭建github个人网站,并熟悉markdown编辑,进行自我知识和技能评估学号 1022011…

日本出行

必备飞机 https://www.bilibili.com/video/BV1RC411J7tf/ 前3分钟 南航 全日空航空 出行公交卡(西瓜卡,首充1000 711消费完) 车次 15:42 https://www.bilibili.com/video/BV1j64y1A7x1/ 车次 13:24 https://www.bilibili.com/video/BV1RC411J7tf pasmo卡(只支持地铁,不支持…

智慧环卫:城市清洁的未来图景与技术革新

在智慧城市的宏伟蓝图中,“智慧环卫”正以其独特的姿态,悄然改变着城市的清洁与环境卫生管理方式。智慧环卫不仅仅是技术的简单应用,更是城市管理智慧化、生态化的重要体现。本文旨在深入探讨智慧环卫的内涵、技术支撑、实践案例及对城市环境改善的深远影响。智慧环卫:定义…

AWC 批量查询使用关系的最新版本并导出Excel

1.查询使用关系的方法:* 调用查询返回数据* @param {Object} data* @returns {Promise}* */ export let queryItemRevisionById = function (data) {if (!data.item_id) {messagingService.showInfo("请输入查询条件");return;}var item_id=data.item_id.dbValue.re…

Docker 简介

首先说明一些特性:一个容器中只有一个主进程,遵循单一原则,否则一个容器挂了会导致多个进程挂掉;容器其实就是一个进程,docker可以管理这些进程。docker能够进行容器隔离,我们操作的其实是docker客户端,而不是server端。 docker info # 查看docker信息docker基本概念 doc…

阿里重磅开源Qwen2-VL:超越人类的视觉理解能力,从医学影像到手写识别,这款开源多模态大模型究竟有多强?(附本地化部署教程)

阿里重磅开源Qwen2-VL:超越人类的视觉理解能力,从医学影像到手写识别,这款开源多模态大模型究竟有多强?(附本地化部署教程)模型介绍 最近呢,阿里巴巴开源了Qwen2-VL,在多模态大模型展现了在实际应用中的巨大潜力,尤其是在处理跨模态数据方面表现出众。以下是该模型的几…

2024 秋季PAT认证甲级(题解A1-A4)

2024 秋季PAT认证甲级(题解A-D) 写在前面 这一次PAT甲级应该是最近几次最简单的一次了,3个小时的比赛差不多30分钟就ak了(也是拿下了整场比赛的rk1),下面是题解报告,每个题目差不多都是20-30行代码,难度在洛谷普及组左右(cf 1000-1200分)A. A-1 Happy Patting 题目描述…

安装远程软件

1.进入raylink官网点击立即下载【https://www.raylink.live/download.html】2.下载好后双击安装3.安装完成后打开raylink

Hyper-V 安装 Centos

Author: ACatSmiling Since: 2024-09-02CentOS 安装 ISO 镜像下载官方网站:https://www.centos.org/目前,最新版本为 CentOS Stream 9:本文以 CentOS 7 为例,下载页拉到下面,选择旧版本安装。Older Versions Legacy versions of CentOS are no longer supported. For hist…

使用zig语言制作简单博客网站(八)归档页和关于页

后端代码注册路由// 归档文章router.get("/api/article/archive", &articleController.getArchiveArticles);model/article.zig增加以下代码/// 用于存放归档文章信息 pub const ArchiveArticle = struct {id: u32,title: []const u8,cate_name: []const u8,crea…