P7791 [COCI2014-2015#7] TETA 题解

· · 题解

这道题,比较水

题目传送门

好了,分享思路的时候到了:

还不会,就看程序吧。注释都在程序里哦!

C++ 代码

#include <iostream>//尽量缩短代码。 
using namespace std;
int k,x,t,ans,c[20],p[5],s[20],a[20];//意思与题目和解析里的意思相同。
int main(){
    cin>>k;
    for(int i=1;i<=k;i++)cin>>c[i]; 
    cin>>x;
    for(int i=1;i<=4;i++)cin>>p[i];
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>s[i];
        if(s[i]==p[1]||s[i]==p[2]||s[i]==p[3]||s[i]==p[4]){//若是套餐里的菜品。 
            a[s[i]]++;//桶计数。 
        }
        else ans+=c[s[i]];
    }
    while(t--){
        int cnt=0;
        for(int i=1;i<=k;i++){//用 i 循环遍历 n。 
            if(a[i]>0){
                cnt+=c[i];a[i]--;}}
        ans+=min(cnt,x);
    }
    cout<<ans;
    return 0;
}