跳板問題(貪心算法+細節思考)

首先直接看題:

?這題直接貪心其實問題不大:

下面先展示我的一個錯誤代碼:

# include<iostream>
# include<vector>
# include<algorithm>using namespace std;int main()
{int N,M;cin>>N>>M;vector<vector<int>> arr(N,vector<int>(2));for(int i=0;i<N;i++){cin>>arr[i][0]>>arr[i][1];}// 感覺貪心應該就能解決int distance = 0;int step = 0;int i = 0;// 可能少考慮了一點while(distance<=M){if(distance<=arr[i][0]){step+=arr[i][0]-distance;distance = arr[i][0]+arr[i][1];}else if(distance>arr[i][0]){i++;if(i>=N){step+=M-distance;break;}}}cout<<step<<endl;return 0;
}

其實整體思路是沒有問題的,

但題目里面有一個細節,就是說“每個跳板能夠將胡同學發射到一定距離內的任意位置。“

這時候問題就來了,比如距離起點為5,能跳長度為6的這樣一個板,它在5-11之間還是會有其他的跳板,所以,在5-11他也不需要自行走路,因為他目前的跳板可以把他送到5-11范圍內的任意位置,那么如果有這樣一個跳板,距離起點7,跳板長度是10,那么借助這個跳板就可以直接達到17這個位置,這是之前代碼沒有考慮到的,之前的代碼直接是認為做上5跳板,到達的位置就是11,這就是問題所在,所以i++的過程中需要進行一個判斷。

所以最終代碼就是:

# include<iostream>
# include<vector>
# include<algorithm>using namespace std;int main()
{int N,M;cin>>N>>M;vector<vector<int>> arr(N,vector<int>(2));for(int i=0;i<N;i++){cin>>arr[i][0]>>arr[i][1];}// 感覺貪心應該就能解決int distance = 0;int step = 0;int i = 0;// 可能少考慮了一點int current_pos = 0;while(distance<M&&i<N){if(current_pos<=arr[i][0]){step+=arr[i][0]-distance;current_pos = arr[i][0];}distance = arr[i][0]+arr[i][1]; // 前一個跳板能達到的最遠距離if(distance>current_pos){current_pos = distance;}i++;}if(current_pos<M){step+=M-current_pos;}cout<<step<<endl;return 0;
}

最主要的點就是一個比較。

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

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

相關文章

pgsql 一些用法

要查詢PostgreSQL數據庫中剩余的磁盤空間&#xff0c;可以使用以下方法&#xff1a; 使用SQL查詢函數&#xff1a; 可以通過pg_size_pretty函數來查看數據庫的總磁盤使用情況&#xff0c;例如&#xff1a; SELECT pg_size_pretty(pg_database_size(‘your_database_name’)); …

【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球

【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球 文章目錄 【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球前言高斯函數一維高斯多維高斯 橢球基本定義一般二次形式 3D高斯橢球3D高斯與橢球的關系各向同性(Isotropic)和…

unix的定時任務和quartz和spring schedule的cron表達式區別

一、核心區別對比表 對比項Unix CrontabQuartzSpring Scheduled表達式位數5 位6 位或 7 位6 位秒級支持? 不支持&#xff08;最小單位是分鐘&#xff09;? 支持? 支持年字段? 無? 可選第7位? 不支持特殊符號支持較少&#xff08;如 *, ,, -, /&#xff09;很豐富和 Quar…

C++基礎算法————遞推

C++遞推:初學者的進階之旅 一、引言 在計算機編程的世界里,C++ 以其強大的功能和高效性受到眾多開發者的青睞。遞推作為一種重要的編程思想,在解決各種復雜問題時發揮著關鍵作用。對于初學者來說,理解并掌握遞推不僅可以提升編程能力,還能培養邏輯思維和問題解決能力。本…

QTabWidget垂直TabBar的圖標和文本水平顯示

一般情況下,我們可以通過QTabWidget的setTabPosition方法來設置TabBar的位置,比如設置在左邊 ui->tabWidget->setTabPosition(QTabWidget::West); 但是此時圖標和文字都是垂直的,如果讓它們水平顯示呢? 一.效果 二.原理 在繪制TabBar時,順時針旋轉90度 三.實現 …

HCIP-AI培養計劃,成為新時代AI解決方案架構高級工程師

01 華為認證是什么&#xff1f; 華為認證&#xff08;Huawei Certification&#xff09;是面向數字化時代構建的ICT人才培訓與認證體系。 當前超過68萬來自全球180多個國家和地區的各行業精英已經取得華為認證&#xff0c;如今全球每年超過10萬名學員通過考試獲得華為認證。 華…

【RabbitMQ】基于Spring Boot + RabbitMQ 完成應用通信

文章目錄 需求描述創建項目訂單系統(生產者)完善配置聲明隊列下單接口啟動服務 物流系統(消費者)完善配置監聽隊列啟動服務 格式化發送消息對象SimpleMessageConverter定義一個對象生產者代碼消費者運行程序 JSON定義一個對象生產者代碼定義轉換器消費者代碼運行程序 需求描述 …

OpenGL Chan視頻學習-7 Writing a Shader inOpenGL

bilibili視頻鏈接&#xff1a; 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 函數網站&#xff1a; docs.gl 說明&#xff1a; 1.之后就不再整理具體函數了&#xff0c;網站直接翻譯會更直觀也會…

Vue 3.0中復雜狀態如何管理

在現代前端應用中&#xff0c;狀態管理扮演著至關重要的角色。一個良好的狀態管理方案能夠&#xff1a; 1. 保持應用數據的一致性和可預測性&#xff1b; 2. 簡化組件間的通信和數據共享&#xff1b; 3. 提高代碼的可維護性和可測試性&#xff1b; 4. 優化應用性能&#xf…

AGI大模型(33):LangChain之Memory

大多數的 LLM 應用程序都會有一個會話接口,允許我們和 LLM 進行多輪的對話,并有一定的上下文記憶能力。但實際上,模型本身是不會記憶任何上下文的,只能依靠用戶本身的輸入去產生輸出。而實現這個記憶功能,就需要額外的模塊去保存我們和模型對話的上下文信息,然后在下一次…

leetcode513. 找樹左下角的值:層序遍歷中的深度與順序控制之道

一、題目深度解析與核心訴求 在二叉樹的眾多問題中&#xff0c;尋找最深層最左節點的值是一個兼具趣味性與代表性的問題。題目要求我們在給定的二叉樹中&#xff0c;找到深度最大的那一層中最左邊的節點值。如果存在多個最深層&#xff0c;只需返回最左邊節點的值即可。 這個…

制作一款打飛機游戲54:子彈編輯UI

今天&#xff0c;我們將繼續工作在我們的子彈模式系統上&#xff0c;創建一些簡單的子彈&#xff0c;并為其設計用戶界面&#xff08;UI&#xff09;。 自動保存功能的重要性 首先&#xff0c;我想提一下自動保存功能。這個功能在編輯器中非常重要&#xff0c;因為我們經常犯…

線程封裝與互斥

目錄 線程互斥 進程線程間的互斥相關背景概念 互斥量mutex 互斥量的接口 初始化互斥量有兩種方法&#xff1a; 銷毀互斥量 互斥量加鎖和解鎖 改進售票系統 互斥量實現原理探究 互斥量的封裝 線程互斥 進程線程間的互斥相關背景概念 臨界資源&#xff1a;多線程執行流共…

【系統設計】2WTPS生產級數據處理系統設計Review

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀與評論&#x1f604;。 目錄 反正能用的系統問題分析方案一&#xff1a;簡單多…

歷年北京理工大學保研上機真題

2025北京理工大學保研上機真題 2024北京理工大學保研上機真題 2023北京理工大學保研上機真題 在線測評鏈接&#xff1a;https://pgcode.cn/problem?classification1 判斷身份證校驗位是否正確 題目描述 給定一個身份證號碼&#xff0c;判斷其最后一位校驗位是否正確。 如果…

uni-app學習筆記十--vu3綜合練習

鞏固提升前面學習的知識點,主要涉及下面這方面的運用&#xff1a; 1.v-for運用; 2.v-model雙向綁定&#xff1b; 3.confirm確認事件&#xff1b; 4.click點擊事件&#xff1b; 5.控制按鈕的可點擊和不可點擊&#xff1b; 6.集合刪除和追加元素&#xff0c;獲取集合元素的…

AI時代新詞-AI芯片(AI - Specific Chip)

一、什么是AI芯片&#xff1f; AI芯片&#xff08;AI - Specific Chip&#xff09;是指專為人工智能&#xff08;AI&#xff09;計算任務設計的芯片。與傳統的通用處理器&#xff08;如CPU&#xff09;相比&#xff0c;AI芯片針對深度學習、機器學習等AI應用進行了優化&#x…

華為云Astro前端頁面數據模型選型及綁定IoTDA物聯網數據實施指南

目錄 1. 選擇合適的數據模型類型及推薦理由 自定義模型: 對象模型: 服務模型: 事件模型: 推薦方案: 2. 數據模型之間的邏輯關系說明 服務模型獲取數據: 對象模型承接數據: 前端組件綁定顯示: 數據保存與反饋(可選): (可選)事件模型實時更新: 小結 …

因重新安裝python新版本,pycharm提示找不到python.exe(No Python at“c:\python.exe“)問題解決方法

1、安裝新版本python后提示錯誤如下&#xff1a; 2、打開設置 3、添加Interpreter 4、配置程序的安裝路徑 5、問題完美解決。

一文帶你徹底理清C 語言核心知識 與 面試高頻考點:從棧溢出到指針 全面解析 附帶筆者手寫2.4k行代碼加注釋

引言&#xff1a;C 語言的魅力與挑戰 從操作系統內核到嵌入式系統&#xff0c;從高性能計算到網絡編程&#xff0c;C 語言高效、靈活和貼近硬件的特性&#xff0c;始終占據著不可替代的地位。然而&#xff0c;C 語言的強大也伴隨著較高的學習曲線&#xff0c;尤其是指針、內存管…