洛谷【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一定...