• BZOJ2947: [Poi2000]促销


    2947: [Poi2000]促销

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 58  Solved: 33
    [Submit][Status]

    Description

    Bytelandish连锁超市委托你编写一个程序来模拟一项即将施行的促销活动,该活动的规则如下:
    ●想要参与的顾客,只需把他的个人资料写在帐单上,并把帐单放入投票箱;
    ●每天活动结束时,数额最大、最小的两张帐单被取出,付款数额最大的顾客将获得一笔奖金,价值为取出的两张帐单的数额之差;
    ●为了不重复计算,取出的两张帐单不再放回箱子,而剩下的帐单仍保留在箱中,进行第二天的活动。
    超市每天的营业额很大,因此可假定:每天活动结束时,箱中至少有两张帐单以供取出。
    你的任务是根据每天投入箱中的帐单,计算出这项促销活动期间超市付出的奖金总数额。
    任务:
    编写一个程序,完成下列工作:
    ●读入投入箱中的帐单的信息;
    ●算出促销活动期间的奖金总额;

    Input

     
    第一行是一个整数 n(1 <= n <= 5000),表示促销活动历时的天数。
    以下的n行,每行包含若干由空格分隔的非负整数。第i+1行的数表示在第i天投入箱子的账单金额。每行的第一行是一个整数k(0 <= k <= 105), 表示当日账单的数目。后面的k个正整数代表这k笔账单的金额,均小于106
    整个活动中涉及到的账单笔数不会超过106

    Output

    唯一一行是一个整数,等于整个促销活动中应该付出的奖金总额。
     

    Sample Input

    5
    3 1 2 3
    2 1 1
    4 10 5 5 1
    0
    1 2

    Sample Output


    19

    题解:
    set水过。。。我今天才知道set居然是左闭右开!!!
    代码:
     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<iostream>
     7 #include<vector>
     8 #include<map>
     9 #include<set>
    10 #include<queue>
    11 #include<string>
    12 #define inf 1000000000
    13 #define maxn 100000
    14 #define maxm 500+100
    15 #define eps 1e-10
    16 #define ll long long
    17 #define pa pair<int,int>
    18 #define for0(i,n) for(int i=0;i<=(n);i++)
    19 #define for1(i,n) for(int i=1;i<=(n);i++)
    20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
    21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
    22 #define mod 1000000007
    23 using namespace std;
    24 inline int read()
    25 {
    26     int x=0,f=1;char ch=getchar();
    27     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    28     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
    29     return x*f;
    30 }
    31 multiset<int>s;
    32 int main()
    33 {
    34     freopen("input.txt","r",stdin);
    35     freopen("output.txt","w",stdout);
    36     int n=read();ll ans=0;
    37     for1(i,n)
    38     {
    39         int m=read();
    40         for1(j,m)s.insert(read());
    41         multiset<int>::iterator x=s.begin(),y=--s.end();
    42         ans+=(ll)(*y-*x);
    43         s.erase(x);s.erase(y);
    44     }
    45     cout<<ans<<endl;
    46     return 0;
    47 }
    View Code


     

  • 相关阅读:
    分式函数的变换源
    分式之殇
    两条直线的位置关系
    数列专题思维导图
    数列通项公式思维导图
    函数与导数思维导图
    三角函数思维导图
    函数与初等函数思维导图
    集合思维导图
    npm包发布正式和测试版
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/4161610.html
Copyright © 2020-2023  润新知