[题解 hduoj-7521] 2024HDU 暑假多校7 - cats 的二分答案

news/2024/9/11 3:02:41/ 标签: c++, 算法, 数据结构

原题链接

题意

在如题所示的二分代码流程中, r 的初始值可能大于 n. 那么通过 mid 访问的 a[mid] 就会越界. 统计有多少 n ∈ [ l , r ] n \in[l,r] n[l,r] 满足越界次数不超过 k, 得到正确结果. ( l , r , k < = 1 e 18 l,r,k<=1e18 l,r,k<=1e18)

思路

第一个思路就是直接进行二分模拟, 但数据太大, 稳 tle 的. 但是思路对后面还是有用的, 我们看看:

这是一个类似二叉树的遍历, 最后会遍历到每一个 n ∈ [ l , r ] n \in[l,r] n[l,r] 的.

int dfs(int l, int r, int k) {if (r < l || k < 0)return 0; // 二分结束if (r == l)return 1; // 当前区间长度为1, 最后一次二分, // 一定是不越界的, 这个位置是二分求的答案// 所以这个 n=l, 是合法答案.int mid = (r + l) / 2;return dfs(l, mid - 1, k - 1) + dfs(mid + 1, r, k) + 1;// 往左 => 执行了 r=mid-1; 说明 mid 是越界的. 所以 k-1// 往右 => 执行了 l=mid+1; 说明 mid 是不越界的. 所以 k 不变// n=mid 时, 这一次是不越界的, 故 +1,也是第一行临界条件 k<0 的由来.
}

考虑: 一个区间内合法的 n 的数量其实是和区间起点终点无关的, 只和区间长度有关, 故记忆化维护一下每个长度的答案. 大大优化时间. 每次二分只用走其中一半, 复杂度来到 log 级别.

代码:

#define int long long
map<int, map<int, int>>ma;
int dfs(int len, int k) {if (len <= 0 || k < 0)return 0;if (ma[len].count(k)) {return ma[len][k];}if (len == 1)return 1;int llen, rlen;if (len % 2 == 0){llen = len / 2 - 1;rlen = len / 2;}else{llen = len / 2;rlen = len / 2;}return ma[len][k] = dfs(llen, k - 1) + dfs(rlen, k) + 1;
}
int solve(int _) {int l, r, k;cin >> l >> r >> k;ma.clear();if (log2(r - l + 1) < k)return r - l + 1;return dfs(r - l + 1, k);
}

http://www.ppmy.cn/news/1507545.html

相关文章

c#对PDF进行电子签章小工具

生产作业需要加作业后的文件进行加签处理&#xff0c;线下盖章太繁琐&#xff0c;因此开发个小工具帮助快速签章。 使用的库ITEXTSHARP 核心逻辑 根据设定大小设置图片&#xff0c;获取PDF页的宽高&#xff0c;计算图片靠右下角的位置&#xff0c;提供一定程度Y向上偏移添加上…

关于RCE

什么是RCE&#xff1f; RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。也就是远程命令执行。命令执行是在目标服务器上任意执行系统命令。它属于高危漏洞之一&#xff0c;也属于代码执行的范畴。命令执行漏洞与…

Android 实现多进程通讯(如何实现多进程开发,Binder、AIDL)

目录 1&#xff09;为什么App需要多进程 2&#xff09;什么是多进程开发? 3&#xff09;如何实现多进程开发&#xff1f; 4&#xff09;跨进程间通讯(案例) 5&#xff09;多进程需要注意什么问题&#xff1f; 6&#xff09;多进程的底层原理是什么&#xff1f;【待写】 …

Armv9.5架构新增的关键扩展--精简版

Armv9.5架构扩展是对Armv9.4的扩展。它增加了强制性和可选的架构特性。有些特性必须一起实现。实现是符合Armv9.5规范,需要满足以下条件: 符合/兼容Armv9.4规范包含所有Armv9.5架构的强制性特性。符合Armv9.5规范的实现还可以包括: Armv9.5的可选特性以下是arm9.5架构中关键…

1、Unity【基础】3D数学

3D数学 文章目录 3D数学1、数学计算公共类Mathf1、Mathf和Math2、区别3、Mathf中的常用方法&#xff08;一般计算一次&#xff09;4、Mathf中的常用方法&#xff08;一般不停计算&#xff09;练习 A物体跟随B物体移动 2、三角函数1、角度和弧度2、三角函数3、反三角函数练习 物…

NAT、服务代理、内网穿透

文章目录 NAT技术NAT IP转换过程NATPNAT的优点NAT的缺点 代理服务器正向代理反向代理 内网穿透和内网打洞内网穿透内网打洞 NAT技术 NAT技术即网络地址转换技术。用于将私有IP地址转换为公共IP地址&#xff0c;以便在互联网或其他外部网络中通信。为了解决IPv4协议下IP地址不足…

keepalived-单播模式设定

目录 配置准备 配置过程 测试结果 配置准备 两个虚拟机&#xff0c;都要有keepalived&#xff0c;vip为172.25.254.100 配置过程 [rootka1 ~]# vim /etc/keepalived/keepalived.conf [rootka1 ~]# systemctl restart keepalived.service unicast_src_ip 172.25.254.10uni…

【Datawhaler AI夏令营-浪潮】大模型应用开发学习记录

大模型应用开发 简要&#xff1a;Datawhale 2024 年 AI 夏令营 第四期联合浪潮信息一同开展的学习活动。 个人大模型训练学习还是需要一些成本的&#xff0c;暂时没钱升级显卡&#xff0c;主打哪里能白嫖去哪嫖卡。 大模型应用开发活动安排是&#xff1a; 大模型部署大模型…

【Kettle】kettle连接MySQL数据库连接不上解决方案汇总

前言 近期项目上经常用到ETL&#xff08;数据抽取转换加载&#xff09;&#xff0c;就想到了之前用过的kettle工具&#xff0c;下班回家想着再玩玩这个工具吧&#xff0c;结果在连接MySQL时&#xff0c;遇到了各种问题&#xff0c;就顺手整理记录一下。所以今天晚上的主题是&a…

使用Python下载飞书共享表格数据教程

写在前面 随着企业协作办公软件的流行&#xff0c;飞书以其高效的协作能力和便捷的共享功能&#xff0c;成为了许多公司必备的工具之一。在日常工作中&#xff0c;我们经常需要从飞书中下载共享的表格数据进行分析。本文将详细介绍如何使用Python下载飞书共享表格数据。 前置…

element plus el-select修改后缀图标

使用 element plus 提供的api 默认为&#xff1a; 修改后为&#xff1a; 方法&#xff1a; <el-select v-model"value" placeholder"Select" size"large" style"width: 120px;":teleported"false" :suffix-icon"…

LVS多模式集群攻略!

目录 NAT模式下的lvs集群准备工作具体步骤客户机lvs服务器1服务器2 测试 DR模式下的lvs集群具体流程客户机&#xff1a;路由器LVS服务器1服务器2测试 防火墙标签解决轮询问题LVS持久链接解决方案 NAT模式下的lvs集群 lvs-nat概念&#xff1a;修改请求报文的目标IP,多目标IP的D…

ASC格式的协议数据解析

函数来自RTT的AT组件 - at_client.c RTT-AT命令 例如&#xff0c;数据是 CGREG: 0,1&#xff0c;通过at_resp_parse_line_args_by_kw把1赋予link_stat。 at_resp_parse_line_args_by_kw at_resp_parse_line_args at_resp_parse_line_args(resp, 1,"IP%s", ip); …

pythonUI自动化007::pytest的组成以及运行

pytest组成&#xff1a; 测试模块&#xff1a;以“test”开头或结尾的py文件 测试用例&#xff1a;在测试模块里或测试类里&#xff0c;名称符合test_xxx函数或者示例函数。 测试类&#xff1a;测试模块里面命名符合Test_xxx的类 函数级&#xff1a; import pytestclass Test…

深度学习 —— 个人学习笔记14(ResNet、DenseNet)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 二十八、残差网络&#xff08; ResNet &#xff09; import torch import torchvision import time from torch impo…

白骑士的Matlab教学进阶篇 2.5 Simulink

系列目录 上一篇&#xff1a;白骑士的Matlab教学进阶篇 2.4 图像处理 Simulink是MATLAB的扩展工具&#xff0c;提供了一个图形化的建模和仿真环境。它广泛应用于系统设计、仿真、自动控制、信号处理等领域。本文将详细介绍Simulink的简介与基本使用、建立与仿真模型、控制系统…

Linux网络:I/O多路转接poll

目录 一、poll函数解析 二、events和revents事件取值 三、poll的优点 四、poll的缺点 一、poll函数解析 poll函数接口&#xff1a; #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); 参数解析&#xff1a; // struct pollfd 结构 struct p…

【C总集篇】第三章 字符串和格式化输入/ 输出

文章目录 第三章 字符串和格式化输入/ 输出字符/字符串简要理解前言字符介绍和使用数组的简单介绍数组的创建格式 字符串介绍和使用printf函数printf函数一般格式printf()的转换说明修饰符printf函数部分格式字符常用格式字符详解%d%f%c%s printf的返回值 scanf规则说明转化说明…

Spring Boot 3 新特性

Spring Boot 3 带来了许多新特性和改进&#xff0c;这些特性主要围绕提升性能、简化配置、增强的安全性以及支持更现代的Java和库版本。以下是一些Spring Boot 3的关键特性&#xff1a; 支持Java 17和更高版本&#xff1a; Spring Boot 3 官方支持Java 17&#xff0c;并且由于J…

VM——深度学习算子GPU版本耗时不稳定

1、问题&#xff1a;使用3080TI显卡4台130万相机&#xff0c;GPU版本算子&#xff0c;耗时不稳定&#xff0c;15ms-150ms波动 2、方法&#xff1a; 1&#xff09;参考海康提供的问题手册