BNUOJ 4151 Buying Feed II

来源:互联网 发布:数据库监听 编辑:程序博客网 时间:2024/05/29 09:43

Elite 2010 January Competition USACO Contest, SILVER DIVISION

题意:一条直线长度为e上,有n个站点,每个站点上有1个或多个购物点。你需要在这n个站点上买到k磅物品。每个站点可以以C_i的价格卖给FJ 最多F_i磅东西。其中FJ的移动是单向的,且载在t磅东西移动y个单位,会造成t*y的额外消费。求使得最终消费最小。

题解:把每个站点的每磅物品看成是一件物品,每件物品除了卖价之外,还附加了从站点到终点的运费。所以把这些物品的花费是固定了,且不同。所以就排序一次,取花费最少的前k个物品。

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int line[12000],l;int main(){    int k,e,n,i,j,t,t1,t2,t3,ans;    scanf("%d%d%d",&k,&e,&n);    l=0;    for (i=0; i<n; i++)    {        scanf("%d%d%d",&t1,&t2,&t3);        t=e-t1;        for (j=0; j<t2; j++)        {            line[l]=t+t3;            l++;        }    }    ans=0;    sort(line,line+l);    for (i=0; i<k; i++)    {        ans+=line[i];    }    printf("%d\n",ans);}

原创粉丝点击