Luogu1059 明明的随机数

STL是个好东西!

看到这道题,我当然想到了堆;在STL里有个东西叫做优先队列priority_queue(其实set做这道题更合适),然后再开个桶看这个数是不是已经有了,有了就不放进来,没有就扔进来;完美;return 0;
下面放代码

#include<bits/stdc++.h>
#include<queue>  //加上这个头文件在码代码的时候方便很多
using namespace std;
bool b[2000];//就是个桶
int n;
priority_queue<int,vector<int>,greater<int> > data;
//int是类型,vector是容器,greater是小根堆
int main()
{
//    freopen("testdata.in","r",stdin);//测试用的无视就好了
    
    cin>>n;
    int x;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        if(!b[x])
        {
            data.push(x);
            b[x]=true; //输入过的数字下次不输入了
        }
    }
    cout<<data.size() <<endl;//返回元素个数
    int k=data.size() ;//这里必须记录一下,否则下面运算时.size()返回值变化就坏了
    for(int i=1;i<=k;i++)
    {
        cout<<data.top()<<' ' ;
        data.pop();//弹出最上边的元素
        
    }
    return 0;
}

就是这样!有什么问题希望大家能指出!ありがとうございます。

猜你喜欢

转载自www.cnblogs.com/Shiina-Rikka/p/11223647.html