NYOJ-106 背包问题(贪心)

来源:互联网 发布:perl 数组查找字符串 编辑:程序博客网 时间:2024/05/21 09:58

南阳OJ上的一个背包问题,注意是单位价值,因为物品可分割,用贪心法即可解决。题目地址http://acm.nyist.net/JudgeOnline/problem.php?pid=106

#include <iostream>#include <algorithm>using namespace std;struct wup{    int v;   //单位价值    int w;   //重量}wp[11];bool cmp(wup a,wup b){    return a.v>b.v;}int main(){    int n;    cin>>n;    int s,m,sum;    while(n--)    {        sum=0;        cin>>s>>m;        int i;        for(i=0;i<s;i++)        {            cin>>wp[i].v>>wp[i].w;        }        sort(wp,wp+s,cmp);     //将单位价值高的排在前面        i=0;        while(m>0)        {            if(m>=wp[i].w) {sum+=wp[i].v*wp[i].w; m-=wp[i].w;}            else { sum+=m*wp[i].v; m-=m;}            i++;        }        cout<<sum<<endl;    }    return 0;}
0 0
原创粉丝点击