您的位置:首页 > 其它

nyoj 106 背包问题

2012-08-22 10:01 288 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=106

贪心

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int v[11],w[11];
	while(n--){
		int s,m;
		cin>>s>>m;
		for(int i=0;i<s;i++)
			cin>>v[i]>>w[i];
		for(int i=0;i<s-1;i++)
			for(int j=i+1;j<s;j++){
				if(v[i]<v[j]){
					swap(v[i],v[j]);
					swap(w[i],w[j]);
				}
			}
		int sum=0;
		int val=0;
		for(int i=0;sum<m;i++){
			if(sum+w[i]<=m){
				sum=sum+w[i];
				val=val+v[i]*w[i];
			}
			else {
				val=val+(m-sum)*v[i];
				sum=m;
			}
		}
		cout<<val<<endl;
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: