zoukankan      html  css  js  c++  java
  • 牛客网 2018年东北农业大学春季校赛 L题 wyh的天鹅

    链接:https://www.nowcoder.com/acm/contest/93/L
    来源:牛客网

    时间限制:C/C++ 3秒,其他语言6秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld

    题目描述

    你们wyh学长小时候住在河边,因为周围的生态环境非常好,所以经常会有天鹅浮在湖面上,每只天鹅都长得不一样,它们偶尔排成一排,偶尔分散开,偶尔也会去其他河畔,wyh学长为了统计它们的个数,编了一个程序赋予它们一个“萌”值,但是这些天鹅很不听话,一会儿会从别的地方游过来一两只,一会儿又会在统计过程中游走一两只,现在请你帮他完成统计任务。

    输入描述:

    共有T(T<=10)组数据,每组数据第一行为两个数 N, M (N,M <= 500000),代表有N只天鹅和M次操作,接下来一行是N个数字,下面M行首先会输入一个字符串S,接着会有三类操作,如果S是“insert”,接着输入一个正整数a,代表插入一只“萌”值为a的天鹅,如果S是“delete”,接着输入一个正整数a,代表删除一只“萌”值为a的天鹅,如果S是“query”,接着输入一个正整数k,代表查询“萌”值第k大的天鹅。
    萌值为[1,1000000000],并且保证一定存在第k大

    输出描述:

    对应每次询问,输出询问结果。
    示例1

    输入

    1
    5 4
    6 4 2 9 1
    query 2
    insert 7
    delete 6
    query 2

    输出

    6
    7



    思路:

            一开始我在网上找了一些关于求第k小的算法,感觉比较难以理解,又考虑了用堆来做,可是也比较麻烦(没办法,我就是懒)。不过后来发现,这题可以直接使用stl来解,我们需要用到vector,其实这个里面没有任何算法的成分在里面,我们还是先看代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int T;
        scanf("%d",&T);
        int n,k,x;
        while(T--){
            vector<int>a;
            scanf("%d%d",&n,&k);
            for(int i=0;i<n;i++){
                scanf("%d",&x);
                a.push_back(x);
            }
            sort(a.begin(),a.end());
            char s[15];
            for(int i=0;i<k;i++){
                scanf("%s %d",s,&x);
                if(s[0]=='q'){cout<<a[a.size()-x]<<endl;}
                else if(s[0]=='i'){a.insert(lower_bound(a.begin(),a.end(),x),x);}
                else if(s[0]=='d'){a.erase(lower_bound(a.begin(),a.end(),x));}
            }
        }
    }
    
    这里面唯一让人难以理解的就是插入和擦除了,说一下这个lower_bound,它里面有三个参数,其实标准的有四个,第一个表示要查询的起始位置,第二个表示终点,第三个表示要查询的数,整个函数返回第三个参数所在位置,对于2,20,30,40这个数组,如果查询15,那么返回的结果是20的位置,也就是大于要查询的数的第一个位置。

  • 相关阅读:
    创建线程的三种方式
    SpringMVC:拦截器和POST中文乱码问题
    SpringMVC:静态资源访问
    SpringMVC :转发、重定向、RedirectAttributes
    SpringMVC:Controller的编写
    SpringMVC——DispatcherServlet
    SpringMVC的执行流程
    第一个SpringMVC程序(注解实现)
    第一个SpringMVC程序
    springsecurity学习
  • 原文地址:https://www.cnblogs.com/ZGQblogs/p/9380874.html
Copyright © 2011-2022 走看看