codeforces 371C

来源:互联网 发布:js修改文件名称后上传 编辑:程序博客网 时间:2024/06/05 09:34

思路:依据题意模拟,同时注意数字的范围,判断所需要的算法;

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=10010;int p[N],need[N],has[N];int g[3];int main(){g['B']=1;g['S']=2;g['C']=3;string ch;while(cin>>ch){int i,j,m=0;__int64 ans=0,r;for(i=0;i<3;i++) scanf("%d",&has[i]);for(i=0;i<3;i++) scanf("%d",&p[i]);scanf("%I64d",&r);memset(need,0,sizeof(need));for(i=0;i<ch.size();i++) need[g[ch[i]]-1]++;for(i=1;i<=100;i++){m=0;for(j=0;j<3;j++)  if(has[j]>=need[j]) has[j]-=need[j];else{m+=(need[j]-has[j])*p[j];has[j]=0;}if(r>=m){r-=m;ans++;}else break;}//先暴力求出100之内的,如果超出在进行判断,if(ans==100){m=0;for(j=0;j<3;j++) m+=need[j]*p[j];ans+=r/m;}printf("%I64d\n",ans);}} 


0 0
原创粉丝点击