外卖的撕‘哔’大战

来源:互联网 发布:jquery导入excel数据 编辑:程序博客网 时间:2024/06/02 16:18

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
2
3 3
5 3
10 6
20 8
5 10 20
3 3
5 5
10 10
20 20
6 10 20
Sample Output
18
1

AC代码:

#include<iostream>#include<cstring>#include <algorithm>using namespace std;struct S{    int a,b;}f[101];bool cmp(const S& p,const S& q){    return p.b>q.b;}int main(){    int N,n,m,i,j,t;    long long k;    int cnt;    cin >> N;    while (N--)    {        cin >> n >> m;        for (i=0;i<n;++i)        {            cin >> f[i].a >> f[i].b;        }        sort(f,f+n,cmp);    /*  for (i=0;i<n;++i)        {            cout <<"a:" << f[i].a << " b:" << f[i].b << endl;        }*/        k=0;        for (i=0;i<m;++i)        {            t=0;            cin >> cnt;            for (j=0;j<n;++j)            {                if (f[j].a<=cnt)                {                    t=1;                    k+=cnt-f[j].b;//这里写错了i结果WA了                    break;                }            }            if (t==0)            {                k+=cnt;            }        }        cout << k << endl;    }    return 0;}
0 0
原创粉丝点击