1 solutions

  • 0
    @ 2025-3-3 16:21:29

    C++ :

    #include<cmath>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int n,m,ans;//总需求量,提供的个数,总价;
    
    struct node
    {
        int a,b;//牛奶单价和产量
    }a[5005];//定义结构体
    
    bool cmp(node a,node b)
    {
        if(a.a!=b.a)return a.a<b.a;
        else return a.b>b.b;
    }//好我们定义一个判断函数,条件见思路1;
    
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=m;i++)
            cin>>a[i].a>>a[i].b;
        sort(a+1,a+1+m,cmp);//用刚定义的函数给它排序
        int i=1;
        while(n)//从n开始减起,直达n为零停止
        {
            if(a[i].b!=0)//当这头牛还没购买完
            {
                a[i].b--;//这头牛可购买数减一
                ans+=a[i].a;//总花费加上这头牛的单价(或者说当前最小单价)
                n--;//需求量减一
            }
            else i++;//购买完了换头牛
        }
        cout<<ans;
        return 0;
    }
    

    Java :

    
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt(),m=sc.nextInt();
            List<Map<String ,Integer>> l1=new ArrayList<>();
            for (int i=1;i<=m;i++){
                Map<String ,Integer> milk=new HashMap() ;
                milk.put("单价",sc.nextInt());
                milk.put("数量",sc.nextInt());
                l1.add(milk);
            }
            Collections.sort(l1, new Comparator<Map<String, Integer>>() {
                @Override
                public int compare(Map<String, Integer> o1, Map<String, Integer> o2) {
    
                        return o1.get("单价")-o2.get("单价");
    
                }
            });
            int m1=0;
        //    for (int i=0;i<l1.size();i++) {
       //         System.out.println(l1.get(i));
         //   }
            for (int i=0;i<m;i++){
                Map<String, Integer> shop = l1.get(i);
                if(shop.get("数量")>=n){
                    m1=m1+n*shop.get("单价");
                    n=0;
                    break;
                }else {
                    m1=m1+shop.get("数量")*shop.get("单价");
                    n=n-shop.get("数量");;
                }
            }
            System.out.println(m1);
        }
    }
    

    Python :

    class Cow:
      def __init__(self,price,num):
        self.price=price
        self.num=num
      def __lt__(self,other):
        return self.price<other.price or self.price==other.price and self.num>other.num
      def __str__(self):
        return "%d %d"%(self.price,self.num)
        
    total,n=list(map(int,input().split()))
    lst=list()
    for i in range(n):
      price,num=list(map(int,input().split()))
      lst.append(Cow(price,num))
    
    lst.sort()
    num_sum=0
    tqsum=0
    i=0
    for item in lst:
      if(total>=item.num):
        total = total-item.num
        tqsum=tqsum+item.num*item.price
      else:
        tqsum=tqsum+(total)*item.price
        total=0
        break
      
    print(tqsum)
    
    
    • 1

    Information

    ID
    9982
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By