CSU 1559

来源:互联网 发布:淘宝用语大全 编辑:程序博客网 时间:2024/05/02 02:57

Description

“订外卖就上XXX,满X减Y,满X减Y...”这样的声音老回荡在我们耳旁。发传单,拉条幅的宣传手段也屡见不鲜。外卖的撕‘哔’大战充满血雨腥风,不过作为消费者,我们的问题是:“已知N种类似满X减Y的优惠,请问你想点M次外卖,最少出多少钱呢?”。(P.S:各优惠不能叠加,外卖不能拼单拆单。)

Input

多组数据,第一行有一个整数T,表示有T组数据。(T<=100

以下每组数据第一行有两个整数N和M,表示外卖网站的优惠种数和你想点的外卖个数。(1<=N,M<=100)

然后接下来N行,每行两个整数ai,bi,表示一种优惠为满ai元可减bi元。(ai>=bi)

最后一行是M个整数,表示你每次点的外卖的价格。

所有的数据不会超过int。

Output

每组数据输出一行,为一个整数,是你在所有外卖上的花销。

Sample Input

23 35 310 620 85 10 203 35 510 1020 206 10 20

Sample Output

18

1

题意:

给定你要购买外卖的价格,问你怎么买才最优惠。

思路:每件外卖Mi 都遍历 找一次 ai,bi (1<=i<=n)  找到后把Mi - bi 累加就是答案

代码:

#include<iostream>#include<algorithm>using namespace std;int const maxn=101;int a[maxn][2];int b[maxn];int main(){    int T;    cin>>T;    while(T--)    {        int N,M,sum=0;        cin>>N>>M;        for(int i=0; i<N; i++)            for(int j=0; j<2; j++)                cin>>a[i][j];        for(int i=0; i<M; i++)            cin>>b[i];        for(int i=0; i<M; i++)        {            int  t=1000,x=0;            for(int j=0; j<N; j++)            {                if(b[i]>=a[j][0])                {                    x=b[i]-a[j][1];                    if(x<t)t=x;                }            }            if(t==1000)            sum+=b[i];            else sum+=t;        }        cout<<sum<<endl;    }    return 0;}



0 0
原创粉丝点击