Codeforces Round 929 (Div. 3)---->E. Turtle vs. Rabbit Race: Optimal Trainings

一,思路:

1,做这题如果对二分敏感的话,看完题目就大概很容易想到,通过二分来找到一个 r ,使得 [ l, r] 之间的和最接近 u (因为这样才是 Isaac 所能获得的最大提升)。

2,还有一个特殊情况,结合代码来说明。

二,代码


#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;const int N = 1e5+10;
typedef long long ll;int arr[N];
ll pre[N];//u--->题目输入的目标值
//st---> 题目输入的起始坐标int u,st;//重写二分比较函数
bool check(int mid) {if (pre[mid] - pre[st - 1] <= u) return true;return false;
}void sovle() {int n;cin >> n;for (int i = 0; i <= n; i++) pre[i] = 0;for (int i = 1; i <= n; i++) {cin >> arr[i];pre[i] = pre[i - 1] + arr[i];}int q;cin >> q;while (q--) {cin >> st >> u;int l=st,r = n;//二分模板while (l < r) {int mid = l + r + 1>> 1;if (check(mid)) l = mid;else r = mid - 1;}//特殊情况:
//       1.首先要知道,我们求得的 r只是 [l,r]之和小于等于u的那个位置,不一定是最接近的那个点。
//       2.举个例子:
//                 (1)例如 数组:[1 ,2 ,8] ,目标值u = 10 , 起始位置 l = 1。(2)这里我们二分求得的是 r =2(1 + 2 = 3 < 10),但是明显 r=3 时更接近 u//       3.还有个陷阱,就是当他们的差距相等时,是选 r +1 还是 r 呢?如果不仔细分析的话,很容易
//       就会想当然认为是 r,因为 r < r +1.实则不是,这里我就不举例了,你们自己可以将下面的判断
//       改成 u - (pre[r] - pre[st - 1]) <= (pre[r + 1] - pre[st - 1]) - u 试一下,看是什么 
//       结果,然后再去找出问题即可。//判断离目标值最近的点是 r 还是 r +1if (r == n || u - (pre[r] - pre[st - 1]) < (pre[r + 1] - pre[st - 1]) - u) {cout << r <<" ";}else cout << r + 1 << " ";}cout << endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);int t;cin >> t;while (t--) {sovle();}return 0;
}

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

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

相关文章

MobiLlama: Towards Accurate and Lightweight Fully Transparent GPT

论文的主要目的是设计一个准确且高效的小型语言模型&#xff08;SLM&#xff09;&#xff0c;以满足资源受限设备的需求。以下是根据论文内容整理的要点&#xff1a; 背景与挑战&#xff1a; 大型语言模型&#xff08;LLMs&#xff09;在处理复杂任务时表现出色&#xff0c;但它…

Linux下进程相关概念详解

目录 一、操作系统 概念 设计操作系统的目的 定位 如何理解“管理” 系统调用和库函数概念 二、进程 概念 描述进程—PCB&#xff08;process control block&#xff09; 查看进程 进程状态 进程优先级 三、其它的进程概念 一、操作系统 概念 任何计算机系统都包…

【Easyx】easyx从入门到精通 — 初步入门

easyx 初步入门 1 安装easyx图形库2 如何使用Easyx3 效果初试4 基本图形绘制4.1 绘制点4.2 绘制直线4.3 绘制圆形4.4 绘制矩形4.5 绘制椭圆4.6 绘制圆角矩形4.7 绘制扇形 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇…

Java学习—字符流

在 Java 中&#xff0c;字符流主要用于处理字符数据&#xff0c;比如文本文件。字符流直接以字符为单位进行读写操作&#xff0c;自动处理字符与底层字节之间的转换&#xff0c;因此非常适合处理包含文本数据的文件。Java 中处理字符流的核心抽象类是 Reader 和 Writer。 Read…

C#面:是否可以从一个 static 方法内部发出对非 static 方法的调用

不可以&#xff1b; 不能直接从一个静态方法内部调用非静态方法。 这是因为静态方法是属于类的&#xff0c;而非静态方法是属于类的实例的。 静态方法可以在没有创建类的实例的情况下被调用&#xff0c;而非静态方法需要通过类的实例来调用。 如果想要从静态方法内部调用非…

算法入门-二分搜索(长期更新)

文章目录 情景一 : 二分查找情景二 : 找出一个 > num 的最左侧的位置情景三 : 找出一个 < num 的最右侧的位置leetcode 162 :寻找峰值leetcode 69 : x 的平方根 首先来简介一下二分搜索算法,二分搜索是一种每次砍半的算法,最经典的案例当然是我们的二分查找算法,但是大部…

【JAVA重要知识 | 第一篇】一篇文章读懂HashMap(存储、扩容、初始化过程)

文章目录 1.一篇文章读懂HashMap&#xff08;存储、扩容、初始化过程&#xff09;1.1HashMap简介1.1.1特点1.1.2优点1.1.3缺点 1.2深入解读HashMap1.2.1常用常量和变量&#xff08;1&#xff09;常用常量&#xff08;2&#xff09;常用变量 1.2.2存储过程&#xff08;1&#xf…

诊所门诊电子处方软件操作教程及试用版下载,医务室处方笺管理系统模板教程

诊所门诊电子处方软件操作教程及试用版下载&#xff0c;医务室处方笺管理系统模板教程 一、前言 以下软件程序教程以 佳易王诊所电子处方软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 如上图&#xff0c;点击基本信息设置——处方配…

Acwing---1208. 翻硬币

翻硬币 1.题目2.基本思想3.代码实现 1.题目 小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反&#xff08;是小写字母&#xff0c;不是零&#xff09;。 比如&#xff0c;可能情形是&#xff1a;**oo***oooo 如果同…

Python编程小案例—利用flask查询本机IP归属并输出网页图片

Python编程小案例—利用flask查询本机IP归属并输出网页图片 环境&#xff1a;Pycharm Mac OS 源码如下&#xff1a; from flask import Flask, render_template, requestapp Flask(__name__)app.route(/) def index():return render_template(IP查询.html)if __name__ __…

文心一言 Python编程之

给一个包含n个整数的数组nums&#xff0c;判断nums中是否存在三个元素a,b,c&#xff0c;使得abc0?请你找出所有和为0且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例1&#xff1a; 输入&#xff1a;nums[-1,0,1,2,-1,-4] 输出&#xff1a;[[-1,-1,2…

中介者模式

定义&#xff1a;中介者模式&#xff08;Mediator Pattern&#xff09;又称为调节者模式或调停者模式。用一个中介对象封装一系列的对象交互&#xff0c;中介者使各对象不需要显式的相互作用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互。 适用…

如何正确选择一台大路灯?2024五大出众品牌大路灯推荐,附超全科普知识整理

大路灯的使用操作非常简便&#xff0c;而且能够提供最适合目前用眼的光线环境。但如今市场中却有一些劣质大路灯&#xff0c;它们的使用体验不佳&#xff0c;很多客户反馈说可能会出现光线不稳定、刺眼等问题&#xff0c;甚至会有让用户有损伤视力的风险。那么如何选择一台大路…

华硕ROG玩家国度幻16air 2024原装系统恢复安装教程方法

华硕ROG玩家国度幻16air 2024原装系统恢复安装教程方法 重建ASUSRECOVERY恢复功能 支持型号&#xff1a; GU605MI&#xff0c;GU605MY&#xff0c;GU605MZ GU605MV&#xff0c;GU605MU 分3种安装方法 远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1…

Spring对IoC的实现

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Qt使用QSettings类来读写ini

在Qt中&#xff0c;可以使用QSettings类来读写ini文件。QSettings提供了一个简单的接口&#xff0c;用于访问和修改ini文件中的键值对。 下面是使用QSettings类来写入ini文件的示例代码&#xff1a; #include <QCoreApplication> #include <QSettings>int main(i…

前端monorepo大仓共享复杂业务组件最佳实践

一、背景 在 Monorepo 大仓模式中&#xff0c;我们把组件放在共享目录下&#xff0c;就能通过源码引入的方式实现组件共享。越来越多的应用愿意走进大仓&#xff0c;正是为了享受这种组件复用模式带来的开发便利。这种方式可以满足大部分代码复用的诉求&#xff0c;但对于复杂…

JAVA *数据库连接池 * 接JDBC

一.介绍: 数据库连接池实际上就是一个 " 容器 " 当有多个拥护需要访问数据库的时候, 一个用户会打开一个数据库连接, 但是!当用户离开的时候,就会断开数据库连接,那么数据库连接就作废了,之后如果还有用户需要进行访问,需要再建立一个数据库连接......循环往复, …

【Mybatis】快速入门 基本使用 第一期

文章目录 Mybatis是什么&#xff1f;一、快速入门&#xff08;基于Mybatis3方式&#xff09;二、MyBatis基本使用2.1 向SQL语句传参2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型参数2.2.4 实体…

Web组态可视化编辑器 快速绘制组态

随着工业智能制造的发展&#xff0c;工业企业对设备可视化、远程运维的需求日趋强烈&#xff0c;传统的单机版组态软件已经不能满足越来越复杂的控制需求&#xff0c;那么实现Web组态可视化界面成为了主要的技术路径。 行业痛点 对于软件服务商来说&#xff0c;将单机版软件转变…