zoukankan      html  css  js  c++  java
  • heap 的一些用法

    noip  合并果子

    #include<bits/stdc++.h>
    using namespace std;
    int heap[maxn];
    int size=0;
    void input(int d)
    {
        heap[size++]=d;
        push_heap(heap,heap+size,greater<int>());
    }
    int get()
    {
        pop_heap(heap,heap+size,greater<int>());
        //pop_heap(heap,heap+size);
        return heap[--size];
    }
    int32_t main()
    {
        int n; cin>>n;
        for(int i=0;i<n;i++)
        {
            int d; cin>>d; input(d);
        }
        int ans=0;
        for(int i=1;i<n;i++)
        {
            int a=get(); int b=get();
            input(a+b);
            ans+=a+b;
        }
        cout<<ans<<endl;
        return 0;
    }

    好的代码

    #include<bits/stdc++.h>
    using namespace std;
    template<typename T>
    void Print(T& V)
    {
        typename T::iterator iter=V.begin();
        while(iter != V.end())
        {
            cout<<*iter++<<" ";
        }
        cout<<endl;
    }
    int main()
    {
        vector<int> ivec;
        for(int i=3;i<=7;++i)
            ivec.push_back(i);
        for(int i=5;i<=9;++i)
            ivec.push_back(i);
        for(int i=1;i<=4;++i)
            ivec.push_back(i);
        cout<<"原数据:";
        Print(ivec);
    
        make_heap(ivec.begin(),ivec.end());//做最大堆排序,其实还在vector容器内
        cout<<"堆排后:";
        Print(ivec);
    
        pop_heap(ivec.begin(),ivec.end());//删除最大堆,其实是把数据放到最后了!
        cout<<"删除后:";
        Print(ivec);
        ivec.pop_back();
    
        pop_heap(ivec.begin(),ivec.end());//删除最大堆,其实是把数据放到最后了!
        cout<<"删除后:";
        Print(ivec);
        ivec.pop_back();
    
        ivec.push_back(15);
        cout<<"添加数据后:";
        Print(ivec);
    
        push_heap(ivec.begin(),ivec.end());//放入最大堆,其实是把新加入的数据,按照堆排加入堆内
        cout<<"把最后一个数加入堆里:
    ";
        Print(ivec);
    
        sort_heap(ivec.begin(),ivec.end());//把堆排顺序,还原成一般的排序算法
        cout<<"还原堆排顺序:
    ";
        Print(ivec);
        return 0;
    }
  • 相关阅读:
    为什么每天都在学习,生活还是没有任何改善?
    MySql基础汇总
    BeanUtils.copyProperties(待复制对象, 待更新对象) || PropertyUtils.copyProperties(待更新对象, 待复制对象)
    ThreadLocal
    synchronized 锁
    STS报could not find tools.jar in the active JRE
    SpringBoot 定时任务 || cron表达式
    lombok注解
    cron表达式
    Thymeleaf 模板引擎
  • 原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/9516866.html
Copyright © 2011-2022 走看看