set的英文意思是“集合”, 集合都不陌生吧,集合的特点有唯一性,即:每一个元素只有一个,所以set可以用来“去重”操作,set还有默认的排序。
1、头文件——<set>
2、定义——set<int>Q;
3、输入(插入)——insert(x);
4、有序输出
set<int>::iterator it;
for(it = Q.begin(); it != Q.end(); it++)
cout<<*it<<endl;
5、删除制定元素——erase(x);
6、清空——clare();
7、判空——empty();
8、大小——size();
9、二分查找——Q.lower_bound(x);
L2-014. 列车调度
Pat上的一个题目,用set完美的解决了。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#include <stack>
#include <math.h>
#include <vector>
#include <set>
using namespace std;
typedef long long LL;
const int inf = 0X3f3f3f3f;
const int Max = 10000;
int main(int argc, char** argv)
{
int i, j, k;
int n, x;
set<int>s;
cin>>n;
for(i = 0; i < n; i++)
{
cin>>x;
if(s.empty())
{
s.insert(x);
}
else
{
set<int>::iterator it;
it = s.lower_bound(x);
if(it == s.end())
{
s.insert(x);
}
else
{
s.erase(it);
s.insert(x);
}
}
}
int t = s.size();
cout<<t<<endl;
return 0;
}