洛谷 p2619 奶牛工資

2021-08-09 06:34:01 字數 1091 閱讀 8166

洛谷【p2619】奶牛工資

題目描述

貝西工作勤勤懇懇,她每月向約翰索要c 元錢作為工資。約翰手上有不少錢,他一共有n 種面額的鈔票。第i 種鈔票的面額記作vi,約翰有ki 張。鈔票的面額設定是比較合理的,保證所有大面額的鈔票都是所有小面額鈔票的整數倍。假設約翰每個月給貝西發一次工資,那麼這些錢夠發幾個月的工資呢?貝西不會找零,如果約翰發的錢大於c 元,多餘的部分就算是貝西的獎勵了。

輸入輸出格式

輸入格式:

第一行:兩個整數n 和c,1 ≤ n ≤ 20, 1 ≤ c ≤ 109

第二行到第n + 1 行:第i + 1 行有兩個整數vi 和ki,1 ≤ vi ≤ 109; 1 ≤ ki ≤ 106

輸出格式:

單個整數:表示約翰最多能給貝西發幾個月的工資

輸入輸出樣例

輸入樣例#1:

3 6

10 1

1 100

5 120

輸出樣例#1:

111

說明第乙個月先給一張十元的,接下來十個月每個月都給兩張五元的,最後一百個月每月給一張一元的和一張五元的。

思路:考慮到所有鈔票面值都是倍數關係,所以根據貪心策略,先把面值大於c的鈔票花出去,不會使答案更差。對於面值小於c的鈔票,先用較大面值的鈔票湊,若最後超過了c,盡量選擇小面值的鈔票。

題解:

#include

#include

#include

using

namespace

std;

struct cca[25];

int cmp(cc aa,cc bb)

int main()

sort(a+1,a+n+1,cmp);

int ans=0;

int now;

for(int i=1;i<=n;i++)

else

}while(1)

}if(sfor(int j=n;j>=now;j--)}}

if(s>=m)

else

}printf("%d",ans);

return

0;}

luogu P2619 奶牛工資

原題位置 這道題是個貪心,怎麼說是貪心呢,就是先選大的,後考慮小的 千萬不要把上句話的意思理解歪了,一開始我就理解歪了,然後華麗麗地tle了 其實就是for,然後如果當前這個值可以被選,就選到不能再選這個值為止 還有乙個小技巧,就是我們定義乙個值,等於c,然後用這個值減,知道小於等於0,這樣子比一直...

P2619 國家集訓隊2 Tree I

新增鏈結描述 二分題,考慮kruskal的過程,讓白邊變成need條,權值定了的時候,最小生成樹是定的,如果現在白邊的數量大於need條,那麼我們需要整體增加白邊的權值,相當於讓白邊減少,如果多的話相反。至於增加多少,需要二分去判定。這道題細節挺多的,比如可能有權值 mid會導致白邊多了,權值 mi...

P2619 國家集訓隊2 Tree I

鏈結分析 為了確定白邊選入的數量,所以給白邊加乙個權值,二分這個值,然後最小生成樹。可以發現白邊的數量雖這個值的增大而減小,滿足單調性。有乙個問題 如果在二分過程中給白邊加上mid,白邊數比need多,加mid 1,白邊數need少。即存在很多相等的白邊 和 很多相等的黑邊。如果白邊大於need一定...