GitBook

这里写图片描述

【CodeForces】[670D2]Magic Powder - 2类似 同样是根据判断能不能做mid个 来进行二分查找

只不过这个每个汉堡所需的材料个数 需要自己用字符串来数

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[120];
__int64 cnt[3];
__int64 n[3];
__int64 p[3];
__int64 r;
bool judge(__int64 x) {
	__int64 t=r;
	for(int i=0; i<3; i++) {
		if(t/p[i]+n[i]<x*cnt[i])
			return false;
		else
			t-=max((__int64)0,(x*cnt[i]-n[i])*p[i]);
	}
	return true;
}
int main() {
	while(scanf("%s",s)!=EOF) {
		cnt[0]=cnt[1]=cnt[2]=0;
		int ls=strlen(s);
		for(int i=0; i<ls; i++) {
			if(s[i]=='B')
				cnt[0]++;
			else if(s[i]=='S')
				cnt[1]++;
			else
				cnt[2]++;
		}
		for(int i=0; i<3; i++)
			scanf("%I64d",&n[i]);
		for(int i=0; i<3; i++)
			scanf("%I64d",&p[i]);
		scanf("%I64d",&r);
		__int64 l=0,r=1e13,res;
		while(l<=r) {
			__int64 mid=(l+r)/2;
			if(judge(mid)) {
				res=mid;
				l=mid+1;
			} else
				r=mid-1;
		}
		printf("%I64d\n",res);
	}
	return 0;
}

题目地址:【CodeForces】[371C]Hamburgers