捆绑出售

Posted hhyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捆绑出售相关的知识,希望对你有一定的参考价值。

# 题意
有 n 件商品,你带着 p 元钱,每次你可以选择至多 k 件商品,只需要支付其中最贵的商品的价格就可以买下你选择的这些商品
你带的钱最多可以购买多少件商品

# 题解
二分最后的位置,check时从后往前减保证正确性

 1 #include <bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 const int N=1e5+10;
 5 ll a[N];
 6 int n,k;
 7 ll p;
 8 bool check(ll mid){
 9    ll pos=p;
10    for(int i = mid; i >= 1; i-=k)
11       pos-=a[i];
12    return pos>=0;
13 }
14 int main(){
15    ios::sync_with_stdio(0);
16    cin.tie(0);
17    cout.tie(0);
18    cin>>n>>p>>k;
19    for(int i = 1; i <= n; i++)
20       cin >> a[i];
21    sort(a+1,a+n+1);
22 
23    int l=1,r=n;
24    while(l < r){
25       int mid = l+r+1 >> 1;
26       if(check(mid))
27          l = mid;
28       else
29          r = mid-1;
30    }
31    cout<<l<<endl;
32 }

 

以上是关于捆绑出售的主要内容,如果未能解决你的问题,请参考以下文章

将捆绑数据传递到以viewPager开头的片段

数据从父片段传递到选项卡片段(子) - Android

通过捆绑发送 AsyncTask

Android:捆绑始终为空

如何将列表视图中的数据从一个片段发送到另一个片段

出现异常:片段已激活