竞赛中用到的一些STL


memset(a,0,sizeof(a));        //数组初始化为0
memset(b,-1,sizeof(b));       //数组初始化为-1

不使用cmp:在上升序列中找第一个比k大的
使用cmp:在下降序列中找第一个比k小的
两者默认都是从前向后找,lower更靠前,找到的可以等于k
bool cmp(int a,int b) {return a>b;}
lower_bound(a+1,a+n+1,k,cmp);
upper_bound(a+1,a+n+1,k,cmp);

#include 
stack s;
s.push(1);
s.top();
s.pop();

队列

#include 
queue q;
q.push(1);
q.front();              //取队尾(最前面的)
q.pop();		//取队尾进行删除

优先队列(默认最大堆,以dj里的最小堆为例)

struct node
{
	int id;
	int w;
	
	bool operator<(const node &x)const {return w>x.w;}
};
priority_queue q;
q.push((node){x,0});
u=q.top().id;
q.pop();
q.empty();