11 貪心演算法 合照

2021-08-19 20:17:08 字數 924 閱讀 5241

description

input

輸入第一行包括兩個正整數n和s,中間用空格隔開,其中1<=n<=1000,1<=s<=10000,表示一共有n位小朋友, sjm手上有s塊積木。以下有n行,每行有兩個正整數,a和b(1<=a<=10^5,1<=b<=10^9),表示每個小朋友手上有的積木數量和還需要的積木數量。

output

輸出sjm最多可以和多少個小朋友合照。

sample input

輸入樣例1:

2 21 4

2 1輸入樣例2:

2 21 4

1 1sample output

輸出樣例1:

2輸出樣例2:

1hint

樣例解釋:

樣例1:有2個小朋友,sjm手裡一開始有2塊積木,第1個小朋友手裡有1塊積木,他還需要4塊積木,第2個小朋友手裡有2塊積木,他還需要1塊積木,sjm可以先滿足第2個小朋友的需求,即給第2個小朋友1塊積木,這樣第2個小朋友就可以砌完圖形,然後把所有的積木給sjm,這樣sjm就有4塊積木,此時可以滿足第1個的需求,所有可以和2個小朋友合照。

樣例2:sjm一開始只能滿足第2個小朋友的需求,然後積木數量變為3,還是不能滿足第1個小朋友的需求,所以最多只能和1個小朋友合照。

its-easy

#include #define size 1001

using namespace std;

int a[size], b[size];

bool v[size]; // 有沒有弄(?)過

int main(int argc, char** argv)

for ( ; ; )

}if (flag) // 如果再沒有則輸出結果

}return 0;

}

經典貪心演算法 貪心演算法概述

貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...