貪心算法

?int a[1000], b=5, c=8;
?swap(b, c); ? ?// 交換操作
?memset(a, 0, sizeof(a)); // 初始化為0或-1

引導問題

為一個小老鼠準備了M磅的貓糧,準備去和看守倉庫的貓做交易,因為倉庫里有小老鼠喜歡吃的五香豆,第i個房間有J[i] 磅的五香豆,并且需要用F[i]磅的貓糧去交換;求老鼠最多可換多少豆?若五香豆不能全換貓糧,按比例換。

Sample Input?
? 5 3 ——M貓糧? ?N房間
? 7 2 ——五香豆? 貓糧
? 4 3
? 5 2
? -1 -1 —— 結束

Sample Output
? 13.333

由按比例換,7/2=3.5? 4/3=1.333...? 5/2=2.5? 3.5最大 排序,一次換——7+5+1.3333=13.333


初識貪心

在對問題求解時,總是做出在當前看來是最好的選擇

也就是說,不從整體上加以考慮,所作出的僅僅是在某種意義上的局部最優解(是否是全局最優,需要證明)。


例題

1.田忌賽馬

每個馬跟比自己弱的程度最小的馬

1.排序

2.藍色最大和紅色最大比較,看藍色能不能比過紅色,若比不過,拿藍色最小的跟紅色比

3.拿藍色最大跟紅色第二大的比...能比就比,不能就繼續拿最差的跟最好的比


反證法上大分~事件序列問題

已知N個事件的發生時刻和結束時刻。

一些在時間上沒有重疊的事件,可以構成一個事件序列,如事件{2,8,10}。

事件序列包含的事件數目,稱為該事件序列的長度。

請編程找出一個最長的事件序列。

至少存在一個最長事件序列包含最早結束事件(最早結束事件是0)

反證法證明上句:

假設所有最長事件序列都不包含最早結束事件;只要證明這個假設是錯的,原命題得證;

任取一個所謂的最長事件序列,把第一個事件去掉,換掉事件0,肯定跟后面都不沖突(因為換上的是最早結束的時間,原來都不沖突,現在更不沖突)

證明完后選中最早結束事件0? ?后面我做類似的:每次找一個最早結束的事件,只要和前面的不沖突的都選中;


2.搬桌子

一個公司要做調整搬桌子,房間有400個,一邊是單號,一邊雙號;

走廊很窄,只通過1個桌子過;

輸入:

第二行:趟數

第三行:房間號:10號搬到20號

每趟搬要10min:不重疊可以同時搬,要10min;重疊要分開搬

法一:與上題的思想差不多,只不過,改成了最早開始事件(找開始最早的)

法二:統計每個區間在時間軸上的重疊次數,并找出最大重疊次數的區間。

#include <bits/stdc++.h>
using namespace std;int main() {int t, i, j, N, P[200];  // t是測試用例的數量,N是每個測試用例的區間數量int s, d, temp, k, MAX;  // s和d是區間的起點和終點,MAX用于記錄最大重疊次數cin >> t;for (i = 0; i < t; i++) {// 初始化P數組,用于記錄每個時間點的重疊次數for (j = 0; j < 200; j++)P[j] = 0;cin >> N;  // 讀取當前測試用例的區間數量for (j = 0; j < N; j++) {cin >> s >> d;  // 讀取區間的起點和終點s = (s - 1) / 2;  // 將起點轉換為數組索引d = (d - 1) / 2;  // 將終點轉換為數組索引// 如果起點大于終點,交換它們if (s > d) {temp = s;s = d;d = temp;}// 在區間[s, d]內的每個時間點增加計數for (k = s; k <= d; k++)P[k]++;}// 找到最大重疊次數MAX = -1;for (j = 0; j < 200; j++)if (P[j] > MAX)MAX = P[j];// 輸出最大重疊次數乘以10cout << MAX * 10 << endl;}return 0;
}

3.刪數問題

已知一個長度不超過240位的正整數n(其中不含有效字0),去掉其中任意s(s小于n的長度)個數字后,將剩下的數字按原來的左右次序組成一個新的正整數。

給定n和s,請編程輸出最小的新正整數。

Sample Input
178543 4
Sample Output
13

法一:從左到右掃描逆序對,刪掉左邊的數,若沒有逆序對,刪掉最后一位數

1 7?8 5?4 3 —— 1 7 5 4 3 ——1 5 4 3 ——1 4 3 —— 1 3?

1 2 3 4?


4.青蛙的鄰居

每個湖泊都有一個青蛙,如果兩個湖泊之間有水渠相連,我們認為兩個青蛙他們為鄰居;

問:你可以畫出這個湖泊分布圖嗎?

Sample Input

3

7 —— 青蛙個數

4 3 1 5 4 2 1 —— 第一個青蛙有4個鄰居;第二個青蛙有3個鄰居....

6

4 3 1 4 2 0

6

2 3 1 1 2 1?

Sample Output

YES

NO

YES

?用以下知識可解決:


離散數學:可圖性判定?

兩個概念:

1.度序列:若把圖A所有頂點的度數排成一個序列S,則稱S為圖A的度序列。

度:一個頂點他有幾條邊,度就是幾

圖A

2 3 1 1 1 就是度序列

2.序列是可圖的:一個非負整數組成的有限序列如果是某個無向圖的度序列,則稱該序列是可圖的。

若度序列2 3 1 1 1可以畫出圖A,就是可圖的;


Havel-Hakimi定理:解決可讀性判定

之后再排序:3 2 2 2 1

做一趟,排序一次;只要出現負數,就不可能了,圖畫不出來;最后全變成0,可以畫;

Havel定理的解釋——加加減減與圖的對應關系_嗶哩嗶哩_bilibili


特別說明

若要用貪心算法求解某問題的整體最優解,必須首先證明貪心思想在該問題的應用結果就是最優解!!

在使用貪心算法解決問題時,必須首先證明貪心策略能夠導致整體最優解。貪心算法通常通過每一步選擇局部最優解來構建全局解,但并非所有問題都適合使用貪心算法,因此證明其正確性是關鍵。

說明理由:

若某貨幣系統有三種幣值,分別為一角、五分和一分;要找1角5分
求最小找幣數時,是否可以用貪心法求解?

可以;先用最大的能找幾個找幾個;

如果將這三種幣值改為一種一分、五分和一分;要找1角5分

是否還可以使用貪心法求解?

不行;

因為他不成倍數;

貪心算法的常見操作:

貪心總是要找最大的、最小的、最劃算的,往往要排序;

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

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

相關文章

機器學習·數據處理

前言 對于大規模數據&#xff0c;我們經常會使用python內置函數或者編寫腳本進行批量化處理&#xff0c;從而提高后續使用算法的效率。 1. 正則表達式 定義&#xff1a;用于檢索、替換符合某個模式的文本&#xff0c;是文本預處理常用技術。基本語法 符號描述.匹配除換行符 …

大廠出品!三個新的 DeepSeek 平替網站

前幾天給大家分享了幾個 DeepSeek 免費平替網站&#xff0c;今天又來更新啦。 新增了以下三個平臺&#xff1a;火山引擎、知乎直達、百度搜索。 經過實際測試&#xff0c;這幾個平臺的服務響應速度快&#xff0c;穩定性表現優異&#xff0c;基本不會出現宕機或服務器繁忙的情…

[創業之路-321]:創新開拓思維和經營管理思維的比較

目錄 一、概述 1.1、定義與內涵 1、創新開拓思維&#xff1a; 2、經營管理思維&#xff1a; 1.2、特點與優勢 1、創新開拓思維的特點與優勢&#xff1a; 2、經營管理思維的特點與優勢&#xff1a; 3、應用場景與限制 4、總結 二、創新開拓思維與經營管理思維&#xf…

《深度學習實戰》第1集:深度學習基礎回顧與框架選擇

本專欄系列博文旨在幫助讀者從深度學習的基礎知識逐步進階到前沿技術&#xff0c;涵蓋理論、實戰和行業應用。每集聚焦一個核心知識點&#xff0c;并結合實際項目進行實踐&#xff0c;避免空談理論&#xff0c;簡潔明快&#xff0c;快速切入代碼&#xff0c;所有代碼都經過驗證…

經典復古嘻哈說唱朋克風格專輯海報標題設計psai英文字體安裝包 Punk Of Sad — Ransom Font

Punk Of Sad 將確保您忘記所有簡潔的線條和企業潤色。這種經典的贖金風格字體是一封寫給 DIY 文化的情書&#xff0c;誕生于雜志、演出海報和地下場景的原始能量的剪切和粘貼混亂。每個字母都是不可預測的&#xff0c;都帶有叛逆的邊緣。 這種字體有三種不同的樣式 – Regular…

hot100-滑動窗口

3. 無重復字符的最長子串 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長子串的長度。 思路&#xff1a;雙指針指向不含重復字符的連續字串的頭和尾&#xff0c;用集合存儲子串中的元素&#xff0c;有重復時&#xff0c;左指針持續右移&#xff0c;無重復后…

MariaDB 歷史版本下載地址 —— 筑夢之路

MariaDB 官方yum源里面只有目前在維護的版本&#xff0c;而有時候對于老項目來說還是需要老版本的rpm包&#xff0c;國內很多鏡像站都是同步的官方倉庫&#xff0c;因此下載老版本也不好找&#xff0c;這里主要記錄下從哪里可以下載到歷史版本的MariaDB rpm包。 1. 官方歸檔網…

Linux-Ansible模塊進階

文章目錄 Copy和FetchFile模塊 Copy和Fetch copy和fetch模塊實踐 copy模塊需要注意的點&#xff1a;在收集日志之前需要對文件先進行改名或者備份fetch模塊需要注意的點&#xff1a;復制的源文件的路徑必須是文件不能是目錄建議全部使用絕對路徑&#xff0c;別使用相對路徑確保…

網絡空間安全(1)web應用程序的發展歷程

前言 Web應用程序的發展歷程是一部技術創新與社會變革交織的長卷&#xff0c;從簡單的文檔共享系統到如今復雜、交互式、數據驅動的平臺&#xff0c;經歷了多個重要階段。 一、起源與初期發展&#xff08;1989-1995年&#xff09; Web的誕生&#xff1a; 1989年&#xff0c;歐洲…

國產開源PDF解析工具MinerU

前言 PDF的數據解析是一件較困難的事情&#xff0c;幾乎所有商家都把PDF轉WORD功能做成付費產品。 PDF是基于PostScript子集渲染的&#xff0c;PostScript是一門圖靈完備的語言。而WORD需要的渲染&#xff0c;本質上是PDF能力的子集。大模型領域&#xff0c;我們的目標文件格…

Powershell Install deepseek

前言 deepseekAI助手。它具有聊天機器人功能&#xff0c;可以與用戶進行自然語言交互&#xff0c;回答問題、提供建議和幫助解決問題。DeepSeek 的特點包括&#xff1a; 強大的語言理解能力&#xff1a;能夠理解和生成自然語言&#xff0c;與用戶進行流暢的對話。多領域知識&…

6. 【.NET 8 實戰--孢子記賬--從單體到微服務--轉向微服務】--微服務基礎工具與技術--Ocelot 網關--概念與簡單入門

網關是一種位于客戶端和后端服務之間的服務&#xff0c;充當所有客戶端請求的單一入口。它的主要職責是接收所有的API調用&#xff0c;匯總各類請求&#xff0c;將其路由到適當的后端服務&#xff0c;并將響應返回給客戶端。網關不僅僅是一個簡單的反向代理&#xff0c;它還能夠…

網頁制作06-html,css,javascript初認識のhtml如何建立超鏈接

超鏈接有外部鏈接、電子郵件鏈接、錨點鏈接、空鏈接、腳本鏈接 一、內部鏈接 與自身網站頁面有關的鏈接被稱為內部鏈接 1、創建內部鏈接 1&#xff09;語法&#xff1a; <a href"鏈接地址"> …… </a> 2&#xff09;舉例應用&#xff1a; 3&#xf…

MySQL后端返回給前端的時間變了(時區問題)

問題&#xff1a;MySQL里的時間例如為2025-01-10 21:19:30&#xff0c;但是返回到前端就變成了2025-01-10 13:19:30&#xff0c;會出現小時不一樣或日期變成隔日的問題 一般來說設計字段時會使用datetime字段類型&#xff0c;這是一種用于時間的字段類型&#xff0c;而這個類型…

【算法與數據結構】單調隊列

目錄 單調隊列 使用單調隊列維護滑動窗口 具體過程&#xff1a; 代碼實現&#xff1a; 復雜度分析&#xff1a; 使用單調隊列優化動態規劃 例題 單調隊列 單調隊列(deque)是一種特殊的隊列&#xff0c;隊列中的元素始終按嚴格遞增或者遞減排列。這樣就可以保證隊頭元素…

AutoGen 技術博客系列 九:從 v0.2 到 v0.4 的遷移指南

本系列博文在掘金同步發布, 更多優質文章&#xff0c;請關注本人掘金賬號&#xff1a; 人肉推土機的掘金賬號 AutoGen系列一&#xff1a;基礎介紹與入門教程 AutoGen系列二&#xff1a;深入自定義智能體 AutoGen系列三&#xff1a;內置智能體的應用與實戰 AutoGen系列四&am…

深度學習每周學習總結Y1(Yolov5 調用官方權重進行檢測 )

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客Y1中的內容 &#x1f356; 原作者&#xff1a;K同學啊 | 接輔導、項目定制 ** 注意該訓練營出現故意不退押金&#xff0c;惡意揣測偷懶用假的結果冒充真實打卡記錄&#xff0c;在提出能夠拿到視頻錄像…

為AI聊天工具添加一個知識系統 之117 詳細設計之58 思維導圖及觀察者效應 之2 概念全景圖

&#xff08;說明&#xff1a;本文和上一篇問題基本相同&#xff0c;但換了一個模型 deepseek-r1&#xff09; Q1227、在提出項目“為使用AI聊天工具的聊天者加掛一個專屬的知識系統”后&#xff0c;我們已經進行了了大量的討論-持續了近三個月了。這些討論整體淋漓盡致體現了…

2012年IMO幾何預選題第6題

設有非等腰的 △ A B C \triangle ABC △ABC, O O O 和 I I I 分別為外心和內心. 在邊 A C AC AC, A B AB AB 上分別存在兩點 E E E 和 F F F, 使得 C D C E A B CDCEAB CDCEAB, B F B D A C BFBDAC BFBDAC. 設 ( B D F ) (BDF) (BDF) 和 ( C D E ) (CDE) (CDE)…

為Eclipse IDE安裝插件IBM編程助手watsonx Code Assistant

從Eclipse IDE 安裝 從Eclipse IDE 安裝插件&#xff1a; _1、在Eclipse IDE 中&#xff0c;單擊幫助菜單&#xff0c;然后選擇EclipseMarketplace。 _2、根據您計劃進行的工作類型選擇安裝方式&#xff1a; 有關代碼建議、代碼解釋、代碼文檔和單元測試的集成生成式人工智能&a…