您的位置:首页 > 其它

贪心法 南阳oj 背包问题

2014-03-23 15:43 204 查看
可拆背包

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(pair<int,int>a,pair<int,int>b)
{return a.first>b.first;}
int main()
{int i,j,k,m,n,s;
cin>>k;
while(k--)
{
pair<int,int>a[1005];
cin>>s>>m;
for(i=0;i<s;i++)
cin>>a[i].first>>a[i].second;
sort(a,a+s,cmp);
i=0;int ans=0;int temp=0;
while(i<s)
{
if(temp+a[i].second<=m)
{temp+=a[i].second;ans+=a[i].first*a[i].second;}
else if(temp+a[i].second>m&&temp<m)
{ans+=a[i].first*(m-temp);temp=m;}
i++;
}
cout<<ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: