時間限制: 1 sec 記憶體限制: 128 mb
[提交] [狀態]
題目描述
shoi這次科技競賽取得了好成績,想慶祝一番,他手頭總共有m元,購買巧克力來讓同學分享快樂。他在sh商店逸擇購買,在巧克力商品櫃中共有n塊巧克力,每塊巧克力的**是a[i]元.商家為了**,提供給他k張優惠券,使用方法是:對於每塊巧克力,如果使用一張優惠券,則可以以b[i]的***格購買.注意每塊巧克力只能使用一張優惠券,只能購買一次。
shoi想知道自己最多可以購買多少塊巧克力?
輸入
第一行三個整數n,k,m(0≤k≤n≤100000,m≤1014)。接下來n行,每行兩個整數,表示a[i]和bi。
輸出
乙個整數表示最多購買巧克力數。
樣例輸入 copy
4 1 7
3 22 2
8 14 3
樣例輸出 copy
3提示
樣例解釋:選擇第1、2、3塊巧克力,其中第三塊使用優惠券,總共5元。
對於20%的資料n≤10。
對於50%的資料:n≤100
對於100%的資料:n≤100000
又被貪心搞了,wa7次
思路:
很簡單的思路,先把所有的優惠券都用完,要想要花錢最少並且數量最多的話,就按照b排序。
然後再從剩下的商品裡看最多能買多少,這時候就需要按照a排序了。
要注意乙個商品只能用一次,所以要再加個標記。
菜的真實
#include
using
namespace std;
typedef
long
long ll;
inline ll read()
while
(ch>=
'0'&&ch<=
'9')
return x*f;
}const
int maxn=
1e6+7;
ll n,k,m;
struct node
;node a[maxn]
;bool
cmp1
(node a,node b)
bool
cmp2
(node a,node b)
intmain()
sort
(a+1
,a+1
+n,cmp1)
;int res=0;
for(
int i=
1;i<=k;i++)}
if(m<=0)
sort
(a+1
,a+1
+n,cmp2)
;for
(int i=
1;i<=n;i++)if
(!a[i]
.flag)
if(m<=0)
} cout
}
P2983 USACO10FEB 購買巧克力
題解 注意題目開 long long 貪心策略 從低到高,買夠為止 反證 若剩下的有乙個k 比k小,那麼交換,穩賺不賠 所以,在買k之前,所有比他便宜的都買完了 include include include include include include include include using...
裝備購買 線性基 貪心
裝備購買 solution 貪心 線性基。由於線性基能夠錶出的線性空間和原數表出的線性空間相同,所以只需要在高斯消元求線性基的過程中貪心選取 最低的行 向量 即可。code include include include include include define rg register defi...
貪心 洛谷 3173 HAOI2009 巧克力
題目 既然每一刀都要切,那肯定代價越大的要越早切,考慮按代價降序排序,如果切了一行,求切列的時候貢獻的行數就多了1。include include include define rr register using namespace std struct reca 20011 int n,m,ans...