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.pswp.cn/news/714952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714952.shtml
英文地址,請注明出處:http://en.pswp.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;將單機版軟件轉變…