UVA11136Hoax or what( multiset的应用)
题意:n天,每天往一个箱子里放m个数,放完之后取最大的Max和最小的min做差,并把这两个数去掉,求n天之后的和
multiset 和 set的原理是相似的,multiset可以存多个相同的数,而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 = ;
int minn,maxn;
for(int i = ; i <= n; i++)
{
scanf("%d", &m);
for(int j = ; j <= m; j++)
{
int thing;
scanf("%d", &thing);
s.insert(thing);
}
if(s.size() > )
{
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() > )
{
it = s.begin();
s.erase(it);
}
ans += maxn - minn;
}
}
printf("%lld\n", ans);
}
return ;
}
UVA11136Hoax or what( multiset的应用)的更多相关文章
- C++ std::multiset
std::multiset template < class T, // multiset::key_type/value_type class Compare = less<T>, ...
- Guava学习笔记:Guava新增集合类型-Multiset
Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multi ...
- [Google Guava]学习--新集合类型Multiset
Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素,且和元素顺序无关.Multiset继承于JDK的Cllection接口,而不是Set接口. Multiset主要方法介绍: a ...
- 4.2 set和multiset
使用必须包含头文件set 1)multiset *:定义 如果不给第二个参数,默认less<key>,即用<来进行. 例如: A是一个类的名字,则可以定义一个容器对象如下: mult ...
- STL(multiset) UVA 11020 Efficient Solutions
题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(可持久化Trie)
D. Vasiliy's Multiset time limit per test 4 seconds memory limit per test 256 megabytes input standa ...
- STL中的set/multiset小结
(1)使用set/multiset之前必须包含头文件<set>:#include<set> (2)namespace std{ template <class T, cl ...
- STL--集和多集(set/multiset)
与基本容器相比,关联容器更注重快速和高效地检索数据的能力.这些容器是根据键值(key)来检索数据的,键可以是值也可以是容器中的某一成员.这一类中的成员在初始化后都是按一定顺序排好序的. 本文地址:ht ...
- C++ Set & MultiSet
转自http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177627.html STL Set介绍集合(Set)是一种包含已排序对象的关联容器 ...
随机推荐
- 深入理解OOP(二):多态和继承(继承)
本文是深入浅出OOP第二篇,主要说说继承的话题. 深入理解OOP(一):多态和继承(初期绑定和编译时多态) 深入理解OOP(二):多态和继承(继承) 深入理解OOP(三):多态和继承(动态绑定和运行时 ...
- Bootstrap系列 -- 44. 分页导航
带页码的分页导航,可能是最常见的一种分页导航,特别是在列表页内容超多的时候,会给用户提供分页的导航方式.平时很多同学喜欢用div>a和div>span结构来制作带页码的分页导航.不过,在B ...
- Codeforces Round #369(div 2)
A:=w= B:=w= C:题意:有一排树,有的树已经上色,有的树没有上色,只能给没上色的树上色,一共m种颜色,不同的树上不同的色花费不同,涂完色后,连续颜色的树成为一段.对于给定的段数k,求出最小花 ...
- 富文本KidnEditor在MVC中的应用
最近看到很多网站后台都用到了富文本,包括自己所在的公司也是.公司用的KindEditor,所以就讲讲KindEditor.之前我也没学过,所以网上搜了一篇博文,直接转载如下(PS:完全以学习为目的哦~ ...
- Linux配置无线网卡驱动实现无线上网
本机装Linux,需要配置的无线驱动.一般Ubuntu都集成无线驱动,基本上无线可以直接使用! 01.查看无线网卡的型号 [root@Mr-zhao software]# lspci | gre ...
- Using LINQ to SharePoint
LINQ and LINQ Providers LINQ is a feature of the programming languages C# and Microsoft Visual Bas ...
- Android中this、super的区别
转载:http://blog.csdn.net/dyllove98/article/details/8826232 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某 ...
- linux系统数据落盘之细节
本文节选自这里,原文以mysql innodb系统为例,介绍了数据经过的各层级的buffer和cache,其它系统也有相似的原理,摘录于此. 3. VFS层 该层的缓冲都放在主机内存中,它的目的 ...
- 对C语言中指针的一些新认识
学C语言这么久了,才发现指针不是想象中那么简单,当初根本就没理解指针怎么用! 变量--是由操作系统自动分配存储空间的 指针--手动分配存储空间或指向已有变量的地址 指针中的内容需要手动释放,而变 ...
- 单链表C/C++实现
#include <iostream> using namespace std; const int N = 10; typedef int ELEMTYPE; typedef struc ...