码迷,mamicode.com
首页 > 其他好文 > 详细

题解 NYOJ248 BUYING FEED

时间:2015-04-08 09:09:24      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:nyoj   贪心   背包   排序   

题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=248

分析:英文题目,看懂了,画几下,就发现其实就是一个贪心背包的变形,水题一个~话不多少,代码走起~

/*
部分背包的变体,水题 
只需要算出每个商店的单位总费用 = 原单位费用+距离的费用 
*/


#include <iostream>
using namespace std;
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>


struct Node
{
       int w,v;
};


Node stores[101];


int cmp(const void *a,const void *b)
{
    Node *x = (Node*)a;
    Node *y = (Node*)b;
    
    return x->v - y->v;
}


int main()
{
    
    int T;
    cin >> T;
    
    while (T--)
    {
          int k,e,n;
          cin >> k >> e >> n;
          
          for (int i = 0; i < n; ++i)
          {
              int x,f,c;
              cin >> x >> f >> c;    
              stores[i].w = f;
              stores[i].v = c + e - x;
          }
          
          qsort(stores,n,sizeof(Node),cmp);
          
          int ans = 0;
          for (int i = 0; i < n && k > 0; ++i)
          {
              if (stores[i].w <= k)
                 {
                 ans += stores[i].w*stores[i].v;
                 k -= stores[i].w; 
                 }
                 else
                 {
                 ans += k*stores[i].v;
                 break;
                 }
          }
          cout << ans << endl;
    }


    return 0;
}


题解 NYOJ248 BUYING FEED

标签:nyoj   贪心   背包   排序   

原文地址:http://blog.csdn.net/aq14aq1/article/details/44935647

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!