1 条题解

  • 0
    @ 2025-10-8 16:50:22

    A15 堆 堆排序

    推荐-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

    A15*【堆】输出最大的m个数[scy]

    信息

    ID
    398
    时间
    500ms
    内存
    1024MiB
    难度
    8
    标签
    递交数
    618
    已通过
    98
    上传者