5 条题解

  • 2
    @ 2025-12-27 18:04:23
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int sum,n;
    	cin>>sum>>n;
    	int p[n],num[n];
    	for(int i=0;i<n;i++)
    	{
    		cin>>p[i]>>num[i];
    	}
    	int s=0;
    	while(1)
    	{
    		int minn=1e9,ind=0;
    		for(int i=0;i<n;i++)
    		{
    			if(num[i]>0)
    			{
    				if(p[i]<minn)
    				{
    					minn=p[i];
    					ind=i;
    				}
    			}
    		}
    		if(sum>num[ind])
    		{
    			sum-=num[ind];
    			s+=num[ind]*p[ind];
    			num[ind]=0;
    		}
    		if(sum<=num[ind])
    		{
    			s+=sum*p[ind];
    			break;
    		}
    	}
    	cout<<s<<endl;
    	return 0;
    } 
    
    
    • 1
      @ 2025-12-20 16:48:43
      #include<bits/stdc++.h>
      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;
      }
      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)
          {
              if(a[i].b!=0)
              {
                  a[i].b--;
                  ans+=a[i].a;
                  n--;
              }
              else i++;
          }
          cout<<ans;
          return 0;
      }
      
      • 1
        @ 2023-7-9 10:42:14

        #include using namespace std; int main() { int n; cin>>n; n/=2; for(int i=1;i<=n+1;i++) { for(int j=1;j<=n2+1;j++) { if(n-i+2<j&&n+i>j) { cout<<" "; } else { cout<<""; } } cout<<endl; } for(int i=n;i>=1;i--) { for(int j=1;j<=n2+1;j++) { if(n-i+2<j&&n+i>j) { cout<<" "; } else { cout<<""; } } cout<<endl; } }

      • 0
        @ 2025-7-25 20:29:41

        非傻瓜脑残精神病者,禁止抄袭。 违者立刻报警处理,请吃子弹。 附送的网址: https://poki.com/zh/g/combat-reloaded

        • 0
          @ 2025-7-25 20:25:38
          解决思路
          ‌问题分析‌:Marry乳业需要采购一定数量的牛奶,每个奶农提供的牛奶单价和产量不同。目标是在满足需求量的前提下,使总花费最小。
          ‌关键直觉‌:由于可以独立选择每个奶农的牛奶数量,且总产量大于需求量,最优策略是优先采购单价最低的牛奶。
          ‌算法选择‌:使用贪心算法:
          将所有奶农按牛奶单价从小到大排序。
          从单价最低的奶农开始采购,尽可能多地购买其牛奶,直到满足总需求量。
          如果当前奶农的产量大于剩余需求量,则只购买剩余需求量的牛奶。
          ‌复杂度分析‌:
          排序:O(M log M),其中 M 是奶农数量(最多5000),高效可行。
          遍历采购:O(M),同样高效。
          
          
          #include<queue>
          #include<math.h>
          #include<stdio.h>
          #include<iostream>
          #include<vector>
          #include<iomanip>
          #include<string.h>
          #include<algorithm>
          #include<cmath>
          #include<cstdio>
          #include<cstring>
          #include<stack>
          #include <fstream>
          #include<string>
          using namespace std;
          #define LL long long
          const int N = 1e5 + 10;
          const int INF = 0x3f3f3f3f;
          struct Farmer
          {
              int price;
              int amount;
          };
          bool compare( Farmer a , Farmer b )
          {
              return a.price < b.price;
          }
          int main()
          {
              int n , m;
              cin >> n >> m;
              vector<Farmer> farmers(m);    
              for ( int i = 0 ; i < m ; ++i )
          	{
                  cin >> farmers[i].price >> farmers[i].amount;
              }    
              sort( farmers.begin() , farmers.end() , compare );    
              int total = 0 , cost = 0;
              for ( int i = 0 ; i < m && total < n ; ++i )
          	{
                  int buy = min( farmers[i].amount , n - total );
                  cost += buy * farmers[i].price;
                  total += buy;
              }    
              cout << cost << endl;
              return 0;
          }
          
          
          

          代码解释 ‌输入处理‌: 读取总需求量 N 和奶农数量 M。 使用vector<pair<int, int>>存储每个奶农的单价和产量。 ‌排序‌:使用sort函数将奶农按牛奶单价升序排列。 ‌贪心采购‌: 初始化totalCost(总花费)和remaining(剩余需求量)。 遍历排序后的奶农列表: 若当前奶农的产量 <= 剩余需求量,则全部采购。 否则,只采购剩余需求量的牛奶。 更新总花费和剩余需求量。 ‌输出结果‌:打印最小总花费。 此方案高效且正确,能够在O(M log M)时间内解决问题,适用于给定的数据范围。

          • 1

          信息

          ID
          553
          时间
          1000ms
          内存
          256MiB
          难度
          8
          标签
          递交数
          202
          已通过
          33
          上传者