藍橋杯第1374題——鍛造兵器

題目描述


小明一共有n塊鍛造石,第塊鍛造石的屬性值為ai.
現在小明決定從這n塊鍛造石中任取兩塊來鍛造兵器
通過周密計算,小明得出,只有當兩塊鍛造石的屬性值的差值等于C,兵器才能鍛造成功
請你幫小明算算,他有多少種選取鍛造石的方案可以使得鍛造成功


輸入描述


第一行包含兩個整數n,C,其含義如題所述
接下來一行包含n個整數,分別表示a1,a2,··,an.
1 < N < 2 x 10^5,|ai| < 10^4,0 < C < 10^9


輸出描述


輸出共一行,包含一個整數,表示答案.


輸入輸出樣例

6 3

8 4 5 7 7 4

?5

解題思路

這個題是一道典型的雙指針題,要控制快指針和慢指針所對應的數據之差為C。

首先,使用排序方法對輸入數據進行排序是必要的。

然后快指針優先移動,直到快慢指針數據之差至少為C;接下來慢指針進行移動,如果不是C(就一定比C大)就往后移動,直到快慢指針之差至多為C。

到此就是一組快慢指針的移動,此時可以判斷快慢指針數據之差是否為C,如果是,就對ans做更新。這題的關鍵是ans更新多少,我們思考后不難發現,按照題目提供的例子,兩個7的石頭可以與兩個4的石頭分別組成一組,這意味著組合數量是滿足要求的兩個數值的石頭的個數乘積,那么我們只需要對快慢指針分別派生出一個新指針,分別向后步進進行計數即可。

下面給出代碼:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) throws IOException {Scanner sc = new Scanner(System.in);BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String[] temp = in.readLine().split(" ");int n = Integer.parseInt(temp[0]);int c = Integer.parseInt(temp[1]);temp = in.readLine().split(" ");int[] data = new int[n];for (int i = 0; i < n; i++) {data[i] = Integer.parseInt(temp[i]);}Arrays.sort(data);int slow = 0, fast = 0;long ans = 0;while (fast < n) {while (fast < n && data[fast] - data[slow] < c) {fast++;}while (fast < n && data[fast] - data[slow] > c) {slow++;}if (fast < n && data[fast] - data[slow] == c) {int oldFast = fast, oldSlow = slow;while (fast < n && data[fast] == data[oldFast]) {fast++;}while (slow < n && data[slow] == data[oldSlow]) {slow++;}ans += (long) (fast - oldFast) * (slow - oldSlow);}}System.out.println(ans);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697728.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能幾個關鍵節點:深藍,AlphaGo,ChatGPT,Sora

近30年&#xff0c;人工智能幾個關鍵節點&#xff1a;深藍&#xff0c;AlphaGo&#xff0c;ChatGPT&#xff0c;Sora 深藍&#xff1a; 1997年&#xff0c;深藍擊敗卡斯帕羅夫的比賽是通過一系列復雜的算法和策略實現的。深藍的開發團隊使用了一種名為“暴力搜索”的技術&…

OGG-00918 映射中缺少鍵列 id.

2024-02-23 14:54:49 INFO OGG-02756 從線索文件獲取了表 GISTAR.PXPH_PON_ROUTE 的定義。. The following columns did not default because of type mismatches: id OGG-00918 映射中缺少鍵列 id. 目標端有字段ID&#xff0c;由于mysql自增&#xff0c;所以只能是b…

短劇小程序系統,重塑視頻觀看體驗的科技革命

隨著科技的飛速發展&#xff0c;人們對于數字化內容的消費需求也在不斷增長。在這個大背景下&#xff0c;短劇小程序作為一種新型的視頻觀看方式&#xff0c;正逐漸受到大眾的青睞。本文將探討短劇小程序的發展背景、特點以及市場前景&#xff0c;分析其在重塑視頻觀看體驗方面…

如何使用Inno Setup制作Unity構建程序的Windows安裝程序

1. 準備 &#xff08;1&#xff09;準備好Unity構建的程序集合 必須包括&#xff1a; Data文件夾&#xff08;xxx_Data&#xff09; Mono文件夾&#xff08;MonoBleedingEdge&#xff09; 打包的應用程序文件&#xff08;xxx.exe&#xff09; Unity播放器dll文件&#xff…

SpringBoot+Docker:高效容器化的最佳實踐

首先為什么要使用 Docker&#xff1f; Docker 是一個強大的工具&#xff0c;它允許開發者將他們的應用程序打包到容器中&#xff0c;以便可以在任何平臺上輕松部署和運行。當涉及到對 Spring Boot 應用程序進行 Docker 化時&#xff0c;每個開發人員都應該遵循一些最佳實踐&am…

編程筆記 Golang基礎 017 數據類型:字符串類型

編程筆記 Golang基礎 017 數據類型&#xff1a;字符串類型 一、字符串類型小結 在Go語言中&#xff0c;字符串&#xff08;string&#xff09;是一種基本的數據類型&#xff0c;用于表示文本數據。它是一個不可變的字符序列&#xff0c;由UTF-8編碼的字節組成&#xff0c;支持U…

深入URP之Shader篇15: Shader關鍵字和變體

之前說了很多shader關鍵字的事情&#xff0c;本篇好好說一下關鍵字和變體。 關鍵字是干什么的 我們寫shader的時候&#xff0c;經常會遇到需要處理不同的情況&#xff0c;比如是否啟用霧&#xff0c;光源是平行光還是點光源&#xff0c;是否使用法線貼圖等等。如果為每一種情…

基于springboot+vue的大創管理系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

【selenium】執行 Javascript 腳本 滾動、元素的特殊操作等

某些特殊情況下&#xff0c;使用selenium的api無法操作頁面元素&#xff0c;點擊、滾動實現的某些功能&#xff0c;可以考慮通過執行js來完成。 為什么不用js寫自動化&#xff1f;——selenium第一版是js寫的&#xff0c;但js兼容性存在問題&#xff0c;所以引入webdriver 現在…

ad15 PCB3D模型導出到SOLIDWORKS

注意&#xff0c;工程文件目錄不能用中文&#xff0c;否則導出的文件會不存在 將這個文件直接拖到 SOLIDWORKS 中 下一步很關鍵 顯示出來了 另存為一個轉配體就可以了

12 個對開發人員有用的 Python 腳本

目錄 Create strong random passwordsExtract text from a PDFText processing with PandocManipulate audio with PydubFilter textLocate addressesConvert a CSV to ExcelPattern match with regular expressionsConvert images to JPGCompress imagesGet content from Wiki…

FPS游戲之漫談網絡抖動引發客戶端的卡頓優化

話說各位大神 你們遇到過因為網絡抖動導致客戶端的卡頓現象嗎&#xff0c;或者說測試反饋模擬弱網環境的時候某個功能點會卡頓一下&#xff0c;然后通過各種定位&#xff0c;發現原來是一次性下發了好多包&#xff1f;&#xff1f;&#xff1f;&#xff1f; 問題來了如果我們在…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(14)

自己挖了一個坑,準備做SS928/SD3403的Yolov8的移植,主要是后臺私信太多人在問相關的問題。先別著急去寫代碼,因為在hi3516dv500下的移植還是比較順利。之前在hi3519av100和hi3559av100系列時遇到過一些問題,所以沒有繼續去移植新的算法。 SS928架構乍一看和hi3559av100特別…

Ubuntu系統本地部署Inis博客結合內網穿透實現遠程訪問本地站點

文章目錄 前言1. Inis博客網站搭建1.1. Inis博客網站下載和安裝1.2 Inis博客網站測試1.3 cpolar的安裝和注冊 2. 本地網頁發布2.1 Cpolar臨時數據隧道2.2 Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 3. 公網訪問測試總…

git 使用總結

文章目錄 git merge 和 git rebasegit mergegit rebase總結 git merge 和 git rebase git merge git merge 最終效果說明&#xff1a; 假設有一個倉庫情況如下&#xff0c;現需要進行 merge&#xff1a; merge 操作流程&#xff1a; merge 的回退操作&#xff1a; git reba…

Java適配器模式 - 靈活應對不匹配的接口

Java適配器模式 - 靈活應對不匹配的接口 引言&#xff1a; 在軟件開發中&#xff0c;我們經常遇到不同系統、庫或框架之間的接口不兼容問題。為了解決這些問題&#xff0c;我們可以使用適配器模式。適配器模式是一種結構型設計模式&#xff0c;它允許不兼容的接口之間進行協作…

用Python采集動態網頁Requests就不那么好用了,試試Selenium

Requests + BeautifulSoup + 額外的庫: 對于一些簡單的動態內容,你能通過分析網絡請求來找到并直接獲取這些數據。 使用 requests 庫來發送 HTTP 請求,并使用 BeautifulSoup 來解析 HTML。 對于 AJAX 請求,你可能需要使用額外的庫(如 mitmproxy 或 BrowserMob Proxy)來…

武漢AAA企業信用等級認證

AAA企業信用等級認證 1. 什么是AAA企業信用等級認證 AAA企業信用等級認證是由國家知名的第三方機構對企業的信用狀況進行評估和認證的一種方式。它是根據企業在市場經濟中所展示出的信用水平、經營實力、企業形象等方面的表現來確定企業的信用等級&#xff0c;以此為企業提供…

在線進制轉換工具

在線進制轉換 - BTool在線工具軟件&#xff0c;為開發者提供方便。 在線進制轉換器提供了二進制&#xff0c;八進制&#xff0c;十進制&#xff0c;十六進制等相互轉換功能。

Putty中運行matlab文件

首先使用命令 cd /home/ya/CodeTest/Matlab進入路徑&#xff1a;到Matlab文件夾下 然后鍵入matlab&#xff0c;進入matlab環境&#xff0c;如果main.m文件在Matlab文件夾下&#xff0c;直接鍵入main即可運行該文件。細節代碼如下&#xff1a; Unable to use key file "y…