您的位置:首页 > 其它

[USACO1.3]混合牛奶 Mixing Milk

2017-02-04 12:54 489 查看
题意

给出Marry乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。

分析

排序,最小价值优先取,太多了就退出循环,输出(之前的价值+还有多少需求*退出时的单价)。

var

n,m,i,j,tj:longint;

a,b:array[0..5000]of longint;

procedure kp(l,r:longint);

var

i,j,mid:longint;

begin

    if l>=r then exit;

    i:=l;j:=r;mid:=a[(l+r) div 2];

    repeat

         while a[i]<mid do inc(i);

         while a[j]>mid do dec(j);

         if i<=j then

         begin

             a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];

             b[0]:=b[i];b[i]:=b[j];b[j]:=b[0];

             inc(i);dec(j);

         end;

    until i>j;

    kp(l,j);

    kp(i,r);

end;

begin

    readln(n,m);

    for i:=1 to m do

    readln(a[i],b[i]);

    kp(1,m);

    tj:=0;

    i:=1;

    while (i<=m)and(b[i]<=n) do

    begin

        tj:=tj+a[i]*b[i];

        n:=n-b[i];

        inc(i);

    end;

    write(tj+n*a[i]);

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: