网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 生活知识 生活百科 知识问答 更多知识

priority_queue&queue的使用

时间:2026-05-03 11:30:46

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

© 2026 五度知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com