您的位置:首页 > 其它

AtCoder Regular Contest 083 C: Sugar Water

2017-09-16 21:46 369 查看

题意

给你一个空杯子,有4种操作:

操作1 加100a克的水

操作2 加100b克的水

操作3 加c克的糖

操作4 加d克的糖

糖的质量不能超过水的质量e/100

糖和水的总质量不能超过f

糖的质量不能超过水的质量a/100

在此前提下糖的浓度最大

输出糖和水的总质量以及糖的质量

分析

根据原题数据范围,可以直接三重for循环枚举操作1,2,3的次数.

坑点在于不能没有水,因此最大浓度下不能加糖时至少要有100a克的水.

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int main(){
int a,b,c,d,e,f;
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
int ans1=0,ans2=0;double rate=0.0;
for(int i=0;i*100*a<=f;++i){
for(int j=0;j*100*b+i*100*a<=f;++j){
if(i+j==0)continue;
int sum=j*100*b+i*100*a;
int lim=min(sum/100*e,f-sum);
for(int k=0;k*c<=lim;++k){
int l=(lim-k*c)/d;
int sugar=l*d+k*c;
if(double(sugar)/sum>rate){
rate=double(sugar)/sum;
ans1=sum+sugar;ans2=sugar;
}
}
}
}
if(rate==0)printf("%d %d\n",100*a,0);
else printf("%d %d\n",ans1,ans2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: