USACO Training Section 1.3 Mixing Milk

简化题意

二个整数 n,m,表示需要牛奶的总量,和提供牛奶的农民个数。
每行两个整数 pi,ai,表示第i个农民牛奶的单价,和农民i一天最多能卖出的牛奶量。
现在我们要求的是用最少的钱去完成这个n的牛奶产量

分析与解答

我们将牛奶的总量的单价从小到大排序

if(p[j]<p[j1])b=1;swap(a[j],a[j1]),swap(p[j],p[j1]);

这里我们采用冒泡排序
代码:

//(water problem)
#include<bits/stdc++.h>
//#pragma GCC optimize (3)
using namespace std;
int main()
{
	int n,m;cin>>n>>m;int p[5005],a[5005];a[m]=INT_MAX;
	for(register int i=0;i<5005;i++) p[i]=a[i]=0;
	for(register int i=0;i<m;i++) cin>>p[i]>>a[i];
	for(register int i=0;i<m;i++){
		int b=0;for(register int j=m-1;j>i;j--){
			if(p[j]<p[j-1]){b=1;swap(a[j],a[j-1]),swap(p[j],p[j-1]);}
		}
		if(b==0) break;
	}
	//for(register int i=1;i<=m;i++) cout<<p[i]<<' '<<a[i]<<endl;
	int x=0,q=0,f=0;while(x<n){
		x+=a[f];q+=a[f]*p[f];f++;
		//cout<<q<<endl;
	}
	cout<<q-(x-n)*p[f-1];
    return 0;
}
//by Euouae
posted @   Euouae  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示