码迷,mamicode.com
首页 > 其他好文 > 详细

HDOJ-6685(暴力+思维)

时间:2019-08-22 22:12:10      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:组合   cin   with   lag   pac   end   思想   hdoj   ref   

Rikka With Coin

HDOJ-6685

主要的思想如下:

首先10元的硬币最多只会用一个,如果用了两个,直接替换成一个10元、一个20元一定不亏。
20元的硬币最多只会用三个,如果用了四个,直接替换成一个10元、两个20元、一个50元一定不亏。
50元的硬币最多只会用一个,如果用了两个,直接替换成个50元和一个100元一定不亏。
对于每个价格,我们优先判断是否不小于100, 然后我们再把其拆出 (%100后的部分) + 100 和 若干个100进行组合,判断i个10和j个20和k个50能否组成 (%100后的部分) + 100,不能则再判断能否组成 (%100后的部分), 然后每次判断最多需要多少个100, 将16种情况枚举完取最小的答案。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int INF=0X3F3F3F3F;
int n;
int w[101];
bool judge(int n,int i1,int j1,int k1){
    for(int i=0;i<=i1;i++){
        for(int j=0;j<=j1;j++){
            for(int k=0;k<=k1;k++){
                if(i*10+j*20+k*50==n){
                    return true;
                }
            }
        }
    }
    return false;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        cin>>n;
        bool flag=true;
        for(int i=0;i<n;i++){
            cin>>w[i];
            if(w[i]%10!=0){
                flag=false;
            }
        }
        if(!flag){
            cout<<-1<<endl;
            continue;
        }
        int ans=INF;
        for(int i=0;i<=1;i++){//50
            for(int j=0;j<=3;j++){//20
                for(int k=0;k<=1;k++){//10
                    int cnt=0;
                    int sum=-INF;
                    for(int m=0;m<n;m++){
                        if(w[m]>=100&&judge(w[m]%100+100,i,j,k)){
                            cnt=w[m]/100-1;
                        }else if(judge(w[m]%100,i,j,k)){
                            cnt=w[m]/100;
                        }else cnt=INF;
                        sum=max(sum,cnt);//最多需要的1美元的个数
                    }
                    ans=min(ans,sum+i+j+k);
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

HDOJ-6685(暴力+思维)

标签:组合   cin   with   lag   pac   end   思想   hdoj   ref   

原文地址:https://www.cnblogs.com/GarrettWale/p/11396988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!