一、问题
二、分析
这道题的关键其实就是要想到二分算法,我们对答案进行二分处理。二分钟的check函数即算出我们需要花费多少钱,然后看我们的钱是否够即可。
三、代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll b, s, c;
ll nb, ns, nc;
ll pb, ps, pc;
ll rub;
bool check(ll mid)
{
ll ab = 0, as = 0, ac = 0;
ab = max(mid * b - nb, (ll)0);
as = max(mid * s - ns, (ll)0);
ac = max(mid * c - nc, (ll)0);
ll sum = ab * pb + as * ps + ac * pc;
//cout << mid << " " << ab << " " << as << " " << ac << endl;
//cout << sum << endl;
return sum <= rub;
}
void solve()
{
string str;
cin >> str;
for(int i = 0; i < str.size(); i ++ )
{
if(str[i] == 'B')
b ++;
else if(str[i] == 'S')
s ++;
else
c ++;
}
cin >> nb >> ns >> nc;
cin >> pb >> ps >> pc;
cin >> rub;
ll l = 0, r = 1e15 + 10;
while(l < r)
{
ll mid = l + r + 1 >> 1;
if(check(mid))l = mid;
else r = mid - 1;
}
cout << l << endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
}