zoukankan      html  css  js  c++  java
  • 【CJOJ2482】【POI2000】促销活动

    题面

    Description

    促销活动遵守以下规则:

        一个消费者 —— 想参加促销活动的消费者,在账单下记下他自己所付的费用,他个人的详细情况,然后将账单放入一个特殊的投票箱。
        当每天促销活动结束时,从投票箱中抽出两张账单:第一张被抽出的账单是金额最大的账单。然后被抽出的是金额最小的账单,对于付了金额最大账单的这位消费者,将得到一定数目的奖金,其奖金数等于他账单上的金额与选出的最小金额的差。
    

    为了避免一个消费者多次获奖,根据上面所抽出的两张账单都不返回到投票箱,但是剩下的账单还继续参加下一天的促销活动。

    超市的售出额是巨大的,这样可以假定,在每天结束,拿出数额最大账单和数额最小账之前,在投票箱内就已经至少存在了 2 张账单。你的任务是去计算每天促销活动投进投票箱的账单数额的基本信息。在整个活动中开销总数。

    本题中约定:
    整个活动持续了 N 天 (N<=5000) 。 第 i 天放入的帐单有 a[i] 张, a[i]<=10^5 。且 sigma(a[1]...a[n])<=10^6 。 每一天放入的帐单的面值均 <=10^6 。

    Input

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

    Output

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

    Sample Input

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

    Sample Output

    19

    题解

    这几道题目用来STL练手
    是STL的好题
    因为每一次都要维护最大值和最小值,并且存在重复的数字。
    这就是multiset的妙用

    关于multiset的基本使用自行百度

    multiset内部的数据存储的时候已经是有序的,可以使用迭代器直接遍历一个multiset,并且与set不同,multiset会保留容器内的重复元素。

    直接上代码了:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<map>
    #include<set>
    using namespace std;
    
    int n,k,a;
    multiset<int> Bill;
    
    int main()
    {
    	cin>>n;
    	long long ans=0;
    	for(int i=1;i<=n;++i)
    	{
    		cin>>k;
    		for(int j=1;j<=k;++j)
    		{
    			cin>>a;
    			Bill.insert(a);
    		}
    		multiset<int>::iterator t1,t2;
    		t1=Bill.begin();
    		t2=Bill.end();
    		t2--;
    		ans+=*t2-*t1;
    		Bill.erase(t1);
    		Bill.erase(t2);
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    jQuery 基本选择器
    JavaScriptif while for switch流程控制 JS函数 内置对象
    JavaScrip基本语法
    数据库 存储引擎 表的操作 数值类型 时间类型 字符串类型 枚举集合 约束
    数据库基础知识 管理员 用户登录授权的操作
    粘包的产生原理 以及如何解决粘包问题
    socket TCP DPT 网络编程
    2018年年终总结
    Android技术分享
    No accelerator found
  • 原文地址:https://www.cnblogs.com/cjyyb/p/7197164.html
Copyright © 2011-2022 走看看