BUYING FEED

http://acm.nyist.net/JudgeOnline/problem.php?pid=248
题意:一条数轴上有n个商店,第i个商店在Xi的位置,最多可以卖Fi磅feed,每磅Ci元。一个人从起点0开始,终点为E,当他到达E点时,至少要买K磅feed,带着1磅feed每前进一个单位,就要额外花费1元。求最小花费是多少。

 
#include
#include
using namespace std;
int k,e,n;
struct Node
{

    int x,f,c;
    bool operator <(const Node & t) const{

        return ((c+(e-x))<(t.c+(e-t.x)));//买1磅到达E点时的花费
    }
}arr[110];
int main(){
   int t;
   scanf("%d",&t);
   while(t-- )
   {

       scanf("%d%d%d",&k,&e,&n);
       for(int i=1;i<=n;i++)
       {
           scanf("%d%d%d",&arr[i].x,&arr[i].f,&arr[i].c);
       }
       sort(arr+1,arr+1+n);
       int sum=0;
       for(int i=1;i<=n;i++)
       {
           if(k>=arr[i].f)
           {
               k-=arr[i].f;
               sum+=arr[i].c*arr[i].f+arr[i].f*(e-arr[i].x);
           }
           else
           {
                sum+=k*arr[i].c+k*(e-arr[i].x);
                break;
           }

       }
       printf("%d\n",sum);
   }

}

你可能感兴趣的:(BUYING FEED)