Educational Codeforces Round 119 D

D. Exact Change

tilian
实在是不好贪心
那我们就暴力一点
我们知道硬币1 2的数量都不会超过3
那我们可以暴力枚举1 2硬币的数量
对于每一个a[i]我们也暴力枚举一下计算出他最少的要用多少个硬币

void solve(){
    int n;cin>>n;
    vector<int>a(n+1);
    for(int i=1;i<=n;i++)cin>>a[i];
    int ans=INF;
    for(int x=0;x<=2;x++){
        for(int y=0;y<=2;y++){
            int res=0;
            for(int i=1;i<=n;i++){
                int mn=INF;
                for(int sx=0;sx<=x;sx++){
                    for(int sy=0;sy<=y;sy++){
                        int v=a[i]-sx-sy*2   ;
                        if(v>=0&&v%3==0){
                            mn=min(mn,v/3);
                        }
                    }
                }
                res=max(res,mn);
            }
            ans=min(ans,res+x+y);
        }
    }
    cout<<ans<<endl;
}
posted @ 2022-12-30 14:56  ycllz  阅读(20)  评论(0)    收藏  举报