1 条题解
-
0
推荐-STL中优先队列就是堆(默认是大根堆):
#include<bits/stdc++.h> using namespace std; priority_queue< int > Q;//默认是大根堆 /* 对int、double、longlong等系统自带类型,可以简单实现大小根堆。 小根堆只要取反存入就行(从堆顶拿出时用再取反即可) 但如果堆中的元素时结构体,那么要重载(重新定义)小于号'<',具体如下: struct node { int id; double v;//将来用v进行排序 } bool operator <(const node &n1,const node &n2) { return n1.v>n2.v;//重新定义n1<n2的效果,从而实现小根堆 /* return n1.v<n2.v;//重新定义n1<n2的的效果,从而实现小根堆 } */ int main() { int n,m,x;scanf("%d%d%d",&n,&m,&x); for(int i=1;i<=n;i++){Q.push(x);x=(x<<15)+(x>>7)+(x>>3)+5;} for(int i=1;i<=m;i++) { x=Q.top();Q.pop(); printf("%d ",x); } return 0; }
- 1
信息
- ID
- 398
- 时间
- 500ms
- 内存
- 1024MiB
- 难度
- 8
- 标签
- 递交数
- 618
- 已通过
- 98
- 上传者