priority_queue&queue的使用

2025-12-30 13:30:56

1、合并果子

#include<bits/stdc++.h>

//有些OJ&版本不兼容,需使用iostream&queue

using namespace std;

int n,a,i,k,s;

int main(){

    priority_queue<int, vector<int>, greater<int> >q;//定义小根堆

    cin>>n;

    for(i=1;i<=n;i++){

        cin>>a;

        q.push(a);//将a放入q

    }

    while(q.size()!=1){//如果q的元素大于1,继续

        k=q.top();//k赋为q的顶端元素

        q.pop();//弹出q的顶端元素

        k+=q.top();

        q.pop();

        s+=k;//将s加上顶端两个的和

        q.push(k);//k放回q

    }

    cout<<s;

    return 0;

}

2、priority_queue常用的函数: top:读入顶端元素 pop:删除顶端元素 size:返回元素个数 push:加入一个元素 empty:如果为空,返回true

1、约瑟夫问

#include<bits/stdc++.h>

using namespace std;

int n,m,i,k;

int main(){

    queue<int>q;

    cin>>n>>m;

    for(i=1;i<=n;i++)

        q.push(i);//将编号为i的定为i

    while(!q.empty()){//不为空继续

        for(i=1;i<m;i++){

            q.push(q.front());//把头复制到尾

            q.pop();//弹出头

        }

        cout<<q.front()<<' ';

        q.pop();//出队

    }

    return 0;

}

2、至于队列的常用函数,大概是: front:读入队头 back:读入队尾 pop:删除队头 empty、size、push:同priority_queue

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢