hihocoder 1105 题外话·堆 堆的应用

题目链接:

1105

一共两种操作 放入和取出(MAX)的

最多有10W次操作 ,暴力肯定会超时。

我们可以将盒子理解为一个大顶堆,即父节点大于左右子节点。

1.每次放入糖果时往上维护堆

2.取出时模仿堆排序的算法 将根节点(max)输出并与最后一个节点交换  再维护堆

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int q[100005];
void HeapAdjust(int loc,int len)
{
    int pos=loc,leftchild=2*loc,rightchild=2*loc+1;
    if(loc<=len/2)
    {
        if(leftchild<=len&&q[leftchild]>q[pos])
            pos=leftchild;
        if(rightchild<=len&&q[rightchild]>q[pos])
            pos=rightchild;
        if(pos!=loc)
        {
            swap(q[pos],q[loc]);
            HeapAdjust(pos,len);
        }
    }
    return;
}
int main()
{
    int n,len=0,b;
    char a;
    scanf("%d",&n);
    getchar();
    for(int j=1;j<=n;j++)
    {
        cin>>a;
        if(a=='A')
        {
            scanf("%d",&q[++len]);
            int l=len/2;
            while(l!=0)                 //依次往上维护堆
            {
                HeapAdjust(l,len);
                l=l/2;
            }
            getchar();
        }
        else if(a=='T')
        {
            printf("%d\n",q[1]);
            swap(q[1],q[len--]);
            HeapAdjust(1,len);          //维护
        }
    }
    return 0;
}
时间: 2024-10-05 10:18:44

hihocoder 1105 题外话·堆 堆的应用的相关文章

hihocoder 1105 : 题外话&#183;堆

#1105 : 题外话·堆 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho有一个糖果盒子,每过一段时间小Ho都会将新买来的糖果放进去,同时他也会不断的从其中挑选出最大的糖果出来吃掉,但是寻找最大的糖果不是一件非常简单的事情,所以小Ho希望能够用计算机来他帮忙计算这个问题! 输入 每个测试点(输入文件)有且仅有一组测试数据. 在一组测试数据中: 第1行为1个整数N,表示需要处理的事件数目. 接下来的M行,每行描述一个事件,且事件类型由该行的第一个字符表示,如果

题外话:谈谈malloc()和free()

对于串的顺序存储,有些需要补充说明.串值的存储空间可在程序执行过程中动态分配而得.比如在计算机中存在一个自由存储区,叫做“堆”.这个堆可由C语言的动态分配函数malloc()和free()来管理. 那么今天就来点题外话,谈谈malloc()和free()威尼斯人赌场 malloc()和free()的基本概念以及基本用法 1. 函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针.如果分配失败,则返回一个空指针(N

我给女朋友讲编程-题外话系列(1)--害怕过七夕,不知道买什么礼物

我女朋友在外地出差,平常能够做的就是打打电话,聊聊天. 下周六就是中国的情人节了. 说实话,也许你们觉得七夕很浪漫,但是我是有一点小恐惧,因为不知道送什么礼物给女朋友好.以前给女朋友送过一些礼物,尽管精心准备,有时难免留有遗憾. 不管怎么说,又是一次情人节,我还是需要精心准备一下,于是花时间来搜索礼物,另外也请朋友们给我出一点建议. 下面是我搜到的一些礼物,想看大图片的朋友可以单击小标题.请大家给点建议. 1, 戒指 曾经在网上买了两对情侣戒指,还刻上了双方名字首字母,满心欢喜送出去,女朋友收到

题外话-国庆期间小县城电商观察

老家在广东,工作在上海的后果就是,每年大概回两次家,国庆和春节. 县城电商观察结果是: 1,物流速度加快,电商巨头布局珠三角地区速度加快,但县城广告仍需推广. 我的家乡属于珠三角三级县城.这次回家首次体验到京东亚马逊23点前下单,次日即达的服务.且在国庆前三天,物流速度没有丝毫降低.京东县城布局已在我家乡完成,可喜可贺. 因为便携的物流,我国庆8天在京东下了四个单,都是选了自营产品,范围涵盖洗涤物品至小家电不等.爸妈及亲戚等均对京东的送货速度极为惊叹,从聊天中了解,他们基本未接触过次日达的电商物

[hihoCoder] 题外话&#183;堆

A direct applicatin of the heap data structure. Specifically, a max heap is used. The required functions include insertion of a node to the heap and extraction of the maximum element of the heap. Each time you insert or remove an element to or from t

《COM原理与应用》题外话——C++虚函数表和delete this

delete this看起来非常的奇怪,我记得在<C++ Primer>中提到过delete this,但是我已经忘了在哪了,也一直没有找到(因为没有电子版,所以一直没找到~).<C++ Primer>中提到的是在析构函数中使用delete this会造成析构函数的无限调用,最终造成栈溢出.我也在网上看了一些,很多人觉得不该使用delete this,因为会引起一些问题.但是delete this也挺有用处的,就和goto语句一样,不应该被一棍子打死(goto语句其实怪好用的:-D

BadVPN详解之--题外话:我之前自研的一个设计

说实话,这个与BadVPN无关,是我去年年初时想的一个东西,只是觉得与BadVPN类似就单列一篇文章来说,在看到BadVPN之前,我一直都想用这个思路来重构OpenVPN,无奈场面过于宏大,加之工作又再也与VPN无关,就一直搁置了,现在知道了有BadVPN这个东西,我也就再也没有必要去想这个事了,就当是个了结吧.我把我去年自研的基于OpenVPN的重构思路在本文中阐述一下,本文中我把我的这个VPN叫做ZyVPN,其实它是基于OpenVPN改的. 总览 有了前面对BadVPN和OpenVPN的介绍

back-不忘初心,方得始终。讲讲我主场3个月的经历。题外话。

终于过了这段纠结的时光,有人问,为什么要工作?可能有的人会说,为了金钱,为了生存,不得已的去工作.但是我觉得工作的意义不仅在此.如果你不热爱你的工作,你不对你的工作充满热情,你的工作不能带给你成就感.那么你一定没有找到适合你的工作. 3个月了,一直在万达驻场,说实话,很累.尤其对于我一个刚工作仅仅一年的人来说,第一次这样的经历.996可能你会觉得很恐怖,但是,我的是997,好像到现在已经连续上班一个月没休息了.不论是身体,还是工作状态都相对差了好多.也许会有一些老司机懂得一些套路,该偷懒偷懒啊.

题外话:Lua脚本语言存在的意义

纯属个人见解. 大致来说:c/c++执行效率高,游戏中一些性能敏感的复杂计算需要用c/c++来实现,防止游戏卡顿和低帧率.这些复杂计算包括战斗逻辑,复杂AI,骨骼动画蒙皮骨骼点的坐标计算等等.但c++是一种比较复杂的编程语言,开发效率较低.嘛,不过这不是主要问题,对于商业手游项目只用c++开发,是致命的.这一点在后边lua具体说明. lua是脚本语言,执行效率不及c/c++,往往用来实现性能不敏感的游戏逻辑,比如窗口界面等等.另外lua语法简单,开发效率高,没有编程背景的策划花精力后也可以掌握,