AtCoder Regular Contest 083 C: Sugar Water

it2022-05-09  47

题意

给你一个空杯子,有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; }

转载于:https://www.cnblogs.com/liu-runda/p/7533093.html

相关资源:数据结构—成绩单生成器

最新回复(0)