一道堆的模板题

洛谷P3378 【模板】堆
给定一个数列,初始为空,请支持下面三种操作:

给定一个整数 xx,请将 xx 加入到数列中。
输出数列中最小的数。
删除数列中最小的数(如果有多个数最小,只删除 11 个)。
输入格式
第一行是一个整数,表示操作的次数 nn。
接下来 nn 行,每行表示一次操作。每行首先有一个整数 opop 表示操作类型。

若 op = 1op=1,则后面有一个整数 xx,表示要将 xx 加入数列。
若 op = 2op=2,则表示要求输出数列中的最小数。
若 op = 3op=3,则表示删除数列中的最小数。如果有多个数最小,只删除 11 个。
输出格式
对于每个操作 22,输出一行一个整数表示答案。

输入输出样例
输入 #1复制
5
1 2
1 5
2
3
2
输出 #1复制
2
5
说明/提示
数据规模与约定
对于 30%30% 的数据,保证 n \leq 15n≤15。
对于 70%70% 的数据,保证 n \leq 10^4n≤10
4

对于 100%100% 的数据,保证 1 \leq n \leq 10^61≤n≤10
6
,1 \leq x \lt 2^{31}1≤x<2
31
,op \in {1, 2, 3}op∈{1,2,3}。

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
#define inf 0x3f3f3f3f
int a[1000005];
int ida;
void put(int k)
{
    a[++ida] = k;
    int n = ida;
    while(n > 1){
        int fa = n>>1;
        if(a[fa] < a[n]) break;
        swap(a[fa],a[n]);
        n = fa;
    }
}
void del()
{
    int now = 1;
    a[1] = a[ida--];
    while(2*now <= ida )
    {
        int next = 2*now;
        if(next < ida&&a[next] > a[next+1]) next++;
        if(a[next] > a[now]) break;
        swap(a[next],a[now]);
        now = next;
    }
}
int main()
{   int n,op,k;
    cin>>n;
    ida = 0;
    for(int i = 1;i <= n;i++){
        cin>>op;
        if(op == 1) {
            cin>>k;
            put(k);
        }
        else if(op == 2){
            cout<<a[1]<<endl;
        }
        else if(op == 3){
            del();
        }
    }
return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Uniapp 模板是一种集成了目管理、活动发布、报名管理、目展示等功能的应用程序模板。该模板的主要目的是为想要打造在线考试、测试或者竞赛等活动的机构或者个人提供一个开发的基础。利用 Uniapp 模板,用户可以快速创建自己的在线考试或测试活动,并通过网站或者移动应用的方式向广大用户发布,并进行管理。 Uniapp 模板的主要特点如下: 1. 目管理:用户可以方便地创建、修改和删除目,并进行目分类、排序和标签等管理操作。 2. 活动发布:用户可以发布各种在线测试、考试、竞赛等活动,并设置报名时间、考试时间、考试方式、奖励等相关信息。 3. 报名管理:用户可以方便地管理报名人员的信息,包括报名时间、报名费用等,并对通过审核的报名者进行追踪和分组。 4. 目展示:用户可以在网站或APP界面中展示目,用户可以按照标签、难度等进行查询和筛选,并进行目的学习、练习、测试等操作。 总的来说,Uniapp 模板为用户提供了一个便捷、高效、安全、有趣的在线测试和竞赛平台,具有良好的用户体验和强大的功能扩展能力,是一个项目开发的不错选择。 ### 回答2: Uniapp模板一个用于创建在线考试或学习应用程序的模板。该模板提供了通用的功能和界面设计,可以快速构建一个强大的库应用。 该模板包括几种类型的目,如选择、填空、判断、主观等,并提供了多种目的展示方式和评分策略。用户可以根据自己的需求,自由地添加、修改或删除目。 该模板还提供了一些有用的功能,如用户管理、答卷统计、成绩查询等。通过这些功能,用户可以更好地监控用户的学习进展,以及评估他们的学习成果。 使用Uniapp模板的优点在于它的跨平台性和便利性。它可以快速地用于Android,iOS和Web应用程序,适用于各种情况下的教育和培训需求。此外,它还提供了完整的开发文档和支持,使得开发过程更加简单和有条理。 总而言之,Uniapp模板一个优秀的工具,可以帮助用户快速创建高品质、高效的库应用,并提高他们的学习效果。同时,这个模板具有很高的灵活性和可扩展性,可以根据个人需求进行定制。 ### 回答3: Uniapp是一个跨平台的应用框架,可以实现一个代码同时运行在多个平台(如iOS、Android、微信小程序、H5等)。模板是集成在Uniapp中的一个实用的工具,可用于构建各种类型的练习或测试模板,如选择、填空、简答等。该模板具有以下特点: 1. 灵活可定制。模板支持自定义目内容、目数量、时间限制、解析、答案等多种参数,能够满足不同场景下的需求。 2. 工具全面。模板提供了丰富的型,包括单选、多选、判断、填空、简答等多项目类型,可以让用户按需选择。 3. 交互友好。模板呈现形式美观、简洁,用户能够轻松操作,能够极大地提高用户的学习和练习效果。 4. 数据管理便捷。该模板内置了完善的数据统计和管理系统,便于用户对练习和测试的数据进行管理,记录用户的学习和测试成绩,提供参考。 综上所述,模板是Uniapp框架中非常实用的一个工具,用户可以根据自己的需求进行定制化,有效提高学习和测试效果,records for one person from the backend.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值