• hdu 3348


    贪心,分为从最大的取何从最小的取,从最大的取比较容易,一直取下去就可以了,从最小的取的时候要考虑把小的换成大的,不过这个操作只有一次机会,不成功的话大的coin值也不能成功:

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int coin[5]={1,5,10,50,100};
    int main()
    {
        int p,a[5];
        int total_case,iii;
        scanf("%d",&total_case);
        for(iii=0;iii<total_case;iii++)
        {
            scanf("%d%d%d%d%d%d",&p,&a[0],&a[1],&a[2],&a[3],&a[4]);
            int ssum=0,i,n1=0;
            for(i=4;i>=0;i--)
            {
                if((p-ssum)/coin[i]<a[i])
                {
                    n1+=(p-ssum)/coin[i];
                    ssum+=((p-ssum)/coin[i])*coin[i];
                }
                else
                {
                    n1+=a[i];
                    ssum+=a[i]*coin[i];
                }
            }
            int sum=0,n2=0;
            for(i=0;i<5;i++)
            {
                int aa=a[i];
                if((p-sum)/coin[i]<a[i])
                {
                  n2+=(p-sum)/coin[i];
                  sum+=((p-sum)/coin[i])*coin[i];
                  a[i]=(p-sum)/coin[i];
                }
                else
                {
                   n2+=a[i];
                   sum+=a[i]*coin[i];
                }
               // cout<<i<<" "<<p<<" "<<sum<<" "<<n2<<endl;
                if(p-sum<coin[i]&&p-sum!=0&&aa-a[i]>0)
                {
                   int j;
                   for(j=i-1;j>=0;j--)
                   { 
                      // cout<<"aaaaaaaaaa "<<(coin[i]-(p-sum))/coin[j]<<" "<<j<<" "<<a[j]<<endl;
                       if((coin[i]-(p-sum))/coin[j]>a[j])
                       {
                           n2-=a[j];
                           sum-=coin[j]*a[j];
                       }
                       else
                       {
                           n2-=(coin[i]-(p-sum))/coin[j];
                           sum-=((coin[i]-(p-sum))/coin[j])*coin[j];
                       }
                   }
                   n2++;
                   sum+=coin[i];
                   break;
                }
            }
            //cout<<ssum<<" "<<sum<<endl;
            if(sum==p&&ssum==p)
            printf("%d %d\n",n1,n2);
            else
            printf("-1 -1\n");
              
        }
    }

  • 相关阅读:
    Centos7 安装 Nginx
    Centos7 安装Php7 (貌似没成功)
    Centos7 安装 Mysql (Ubuntu)
    Centos7 安装apache(LAMP)
    Tp5 写类下商品计算数量
    Tp5 写随机数(商品货号)
    Tp5的 多项搜索框(下拉框+输入框)
    centos7 安装python3
    centos 安装notepad++
    用selenium控制已打开的浏览器
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985957.html
Copyright © 2020-2023  润新知