【洛谷貪心算法題】P1094紀念品分組

該題運用貪心算法,核心思想是在每次分組時,盡可能讓價格較小和較大的紀念品組合在一起,以達到最少分組的目的。
在這里插入圖片描述

【算法思路】

  1. 輸入處理:首先讀取紀念品的數量n和價格上限w,然后依次讀取每件紀念品的價格,并將其存儲在容器vector中

  2. 排序:使用 sort 函數對紀念品的價格進行從小到大的排序。排序的目的是方便后續使用雙指針法,能快速找到價格最小和最大的紀念品。

  3. 雙指針初始化:初始化兩個指針 left 和 right,分別指向價格最小和最大的紀念品。同時,初始化分組數量 groups 為 0。

  4. 分組過程:
    ? 當 left 小于等于 right 時,進入循環:
    ? 如果 left 等于 right,說明只剩下一個紀念品,將分組數量加 1 并跳出循環。
    ? 如果價格最小和最大的紀念品價格之和不超過價格上限 w ,則將它們分為一組,left 指針右移一位,right 指針左移一位,分組數量加 1。
    ? 如果價格最小和最大的紀念品價格之和超過價格上限 w ,則將價格最大的紀念品單獨分為一組,right 指針左移一位,分組數量加 1。

  5. 輸出結果:循環結束后,輸出分組的數量。

【代碼示例】

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int w, n;// 讀取每組紀念品價格上限 w 和紀念品數量 ncin >> w;cin >> n;// 使用 n 來初始化 vector 的大小vector<int> P(n);// 讀取每個紀念品的價格for (int i = 0; i < n; i++) {cin >> P[i];}// 對紀念品價格從小到大排序sort(P.begin(), P.end());// 雙指針法分組int left = 0;int right = n - 1;// 初始化分組數量為 0int groupCount = 0;while (left <= right) {if (left == right) {// 若只剩一個紀念品,單獨成一組groupCount += 1;break;}if (P[left] + P[right] <= w) {// 若最小和最大價格的紀念品能分在一組groupCount += 1;left += 1;right -= 1;} else {// 若不能,最大價格的紀念品單獨成一組right -= 1;groupCount += 1;}}// 輸出最少的分組數量cout << groupCount << endl;return 0;
}

注意:

雙指針一般是整數類型的索引,而非指針類型

②使用 n 來初始化 vector 的大小

③將groupCount初始化為0,避免未定義行為

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

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

相關文章

[STM32]從零開始的STM32 BSRR、BRR、ODR寄存器講解

一、前言 學習STM32一陣子以后&#xff0c;相信大家對STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及庫函數控制STM32的引腳從而點亮一個LED&#xff0c;之前的寄存器只是作為一個引入&#xff0c;并沒有深層次的講解&#xff0c;在教…

SQL分組問題

下列為電商公司用戶訪問時間數據 統計某個用戶連續的訪問記錄&#xff0c;如果時間間隔小于60s&#xff0c;就分為一組 id ts 1001 17523641234 1001 17523641256 1002 17523641278 1001 17523641334 1002 17523641434 1001 17523641534 1001 17523641544 1002 17523…

3月2日 C++日常習題測試一答案

C測試題答案與講解 一、填空題答案及講解 答案&#xff1a;const 講解&#xff1a;在 C 中&#xff0c;const關鍵字用于定義常量&#xff0c;一旦定義&#xff0c;其值不能被修改。例如const int num 10;&#xff0c;這里的num就是一個常量。 答案&#xff1a;3 講解&…

2W8000字 LLM架構文章閱讀指北

? 大模型架構專欄已經更新了30多篇文章。完整的專欄內容歡迎訂閱&#xff1a; LLM 架構專欄 1、LLM大模型架構專欄|| 從NLP基礎談起 2、 LLM大模型架構專欄|| 自然語言處理&#xff08;NLP&#xff09;之建模 3、 LLM大模型架構之詞嵌入&#xff08;Part1&#xff09; 3、 LLM…

SP導入智能材質球

智能材質球路徑 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就會自動刷新

網絡原理----TCP/IP(3)

核心機制七----延時應答 默認情況下&#xff0c;接收方都是在收到數據報的第一時間&#xff0c;就返回ack&#xff0c;但是可以通過延時返回ack的方式來提高效率&#xff0c;理論上不是100%提高效率&#xff0c;但還是有一定幫助的。 因為如果接收數據的主機?刻返回ACK應答,…

MacBook Pro使用FFmpeg捕獲攝像頭與麥克風推流音視頻

FFmpeg查看macos系統音視頻設備列表 ffmpeg -f avfoundation -list_devices true -i "" 使用攝像頭及麥克風同時推送音頻及視頻流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…

部署Joplin私有云服務器postgres版-docker compose

我曾經使用過一段時間 Joplin&#xff0c;官方版本是收費的&#xff0c;而我更傾向于將數據掌握在自己手中。因此&#xff0c;在多次權衡后&#xff0c;我決定自己搭建 Joplin 服務器并進行嘗試。 個人搭建的版本與數據庫直連&#xff0c;下面是使用 Docker Compose 配置數據庫…

SQL的select語句完整的執行順序

SQL的SELECT語句的執行順序可以用"做菜流程"來類比理解。雖然我們寫SQL時按SELECT…FROM…WHERE…順序寫&#xff0c;但數據庫執行順序完全不同。以下是通俗易懂的講解&#xff08;附流程圖和示例&#xff09;&#xff1a; &#x1f527; 執行順序流程圖&#xff1a…

Spring Cloud LoadBalancer詳解

一、介紹 Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客戶端負載均衡器,抽象和實現,用來替代Ribbon(已經停更), 二、Ribbon和Loadbalance 對比 組件組件提供的負載策略支持負載的客戶端Ribbon隨機 RandomRule輪詢 RoundRobinRule 重試 RetryRule最低并發 Bes…

ubuntu中ollama設置記錄

自己同一臺電腦主機安裝3080和3090顯卡&#xff0c;測試發現ollama只默認跑在3090上&#xff1b;故查看一下設置&#xff0c;成功也把3080也運行起來了。 原因如下&#xff1a; 開始設置記錄&#xff1a; Environment Variables: OLLAMA_DEBUG 作用&#xff1a;顯示額外的調試…

RabbitMQ系列(四)基本概念之Exchange

在 RabbitMQ 中&#xff0c;Exchange&#xff08;交換機&#xff09; 是消息路由的核心組件&#xff0c;負責根據規則將生產者發送的消息分發到對應的隊列&#xff08;Queue&#xff09;中。以下是其核心功能與分類的詳細說明&#xff1a; 一、Exchange 的核心作用 消息路由樞…

有沒有什么免費的AI工具可以幫忙做簡單的ppt?

互聯網各領域資料分享專區(不定期更新): Sheet 正文 1. 博思AIPPT 特點:專為中文用戶設計,支持文本/文件導入生成PPT,內置海量模板和智能排版功能,涵蓋商務、教育等多種場景。可一鍵優化布局、配色,并集成AI繪圖功能(文生圖/圖生圖)。適用場景:職場匯報、教育培訓、商…

【Python · PyTorch】循環神經網絡 RNN(基礎應用)

【Python PyTorch】循環神經網絡 RNN&#xff08;簡單應用&#xff09; 1. 簡介2. 模擬客流預測&#xff08;數據集轉化Tensor&#xff09;3.1 數據集介紹3.2 訓練過程 3. 模擬股票預測&#xff08;DataLoader加載數據集&#xff09;3.1 IBM 數據集3.1.2 數據集介紹3.1.3 訓練…

【JSON2WEB】15 銀河麒麟操作系統下部署JSON2WEB

【JSON2WEB】系列目錄 【JSON2WEB】01 WEB管理信息系統架構設計 【JSON2WEB】02 JSON2WEB初步UI設計 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代碼前端框架介紹 【JSON2WEB】05 前端開發三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

地基簡識Spring MVC 組件

Spring MVC 是一個基于 MVC 設計模式的框架&#xff0c;其核心組件協同工作以處理 HTTP 請求并生成響應。以下是各組件的詳細說明及其協作流程&#xff1a; 一、?核心組件 ?DispatcherServlet&#xff08;前端控制器&#xff09;? ?作用&#xff1a;接收所有請求并協調其他…

Spring Boot(七):Swagger 接口文檔

1. Swagger 簡介 1.1 Swagger 是什么&#xff1f; Swagger 是一款 RESTful 風格的接口文檔在線自動生成 功能測試功能軟件。Swagger 是一個規范和完整的框架&#xff0c;用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。目標是使客戶端和文件系統作為服務器以同樣的…

cursor 彈出在簽出前,請清理倉庫工作樹 窗口

問題出現的背景&#xff1a;是因為我有兩臺電腦開發&#xff0c;提交后&#xff0c;另一個電腦的代碼是舊的&#xff0c;這個時候我想拉取最新的代碼&#xff0c;就會出現如下彈窗&#xff0c;因為這個代碼暫存區有記錄或者工作區有代碼的修改&#xff0c;所以有沖突&#xff0…

Cocos Creator3.8.6拖拽物體的幾種方式

文章目錄 前言一、第一種通過UILocation二、第二種通過UIDelta實現總結 前言 在游戲開發中&#xff0c;拖拽物體是一個非常常見的交互功能&#xff0c;無論是用于UI元素的拖動&#xff0c;還是場景中物體的移動&#xff0c;拖拽操作都能極大地提升用戶體驗。Cocos Creator 3.8…

在 Mac mini M2 上本地部署 DeepSeek-R1:14B:使用 Ollama 和 Chatbox 的完整指南

隨著人工智能技術的飛速發展&#xff0c;本地部署大型語言模型&#xff08;LLM&#xff09;已成為許多技術愛好者的熱門選擇。本地部署不僅能夠保護隱私&#xff0c;還能提供更靈活的使用體驗。本文將詳細介紹如何在 Mac mini M2&#xff08;24GB 內存&#xff09;上部署 DeepS…