zoukankan      html  css  js  c++  java
  • UVA11136Hoax or what( multiset的应用)

    题目链接

    题意:n天,每天往一个箱子里放m个数,放完之后取最大的Max和最小的min做差,并把这两个数去掉,求n天之后的和

    multiset 和 set的原理是相似的,multiset可以存多个相同的数,而set都是唯一的,同时都是从小到大排列

    set容器的总结

    set还有lower_bound(x) {返回 第一个大于或者等于x的位置} 和 upper_bound(x) { 返回第一个大于x的位置 }

    #include <iostream>
    #include <set>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    multiset<int> s;
    int main()
    {
        int n,m;
        while(scanf("%d", &n) != EOF && n)
        {
            s.clear();
            long long ans = 0;
            int minn,maxn;
            for(int i = 1; i <= n; i++)
            {
                scanf("%d", &m);
                for(int j = 1; j <= m; j++)
                {
                    int thing;
                    scanf("%d", &thing);
                    s.insert(thing);
                }
                if(s.size() > 0)
                {
                    multiset<int>::iterator it;
                    it = s.end();
                    it--;
                    maxn = *it;
                    s.erase(it);  // 本来这里写成了s.erase(maxn),错误,应为会把所有的maxn都删除,这里只要删除一个
                    it = s.begin();
                    minn = *it;  //如果最后只剩下一个数,既是最大又是最小
                    if(s.size() > 0)
                    {
                        it = s.begin();
                        s.erase(it);
                    }
                    ans += maxn - minn;
                }
            }
            printf("%lld
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    centos7下安装Jdk8、Tomcat8
    CentOS7.3下使用YUM安装MySQL5.6
    数据库表直接生成Excel
    分页工具类
    ResponseUtil
    图片上传
    UUIDUtils
    html和js
    java
    Eclipse启动发生的错误An internal error occurred during: "Initializing Java Tooling".
  • 原文地址:https://www.cnblogs.com/zhaopAC/p/5244499.html
Copyright © 2011-2022 走看看