• codeforces_305C_STLset


    C. Ivan and Powers of Two
    time limit per test
    0.5 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Ivan has got an array of n non-negative integers a1, a2, ..., an. Ivan knows that the array is sorted in the non-decreasing order.

    Ivan wrote out integers 2a1, 2a2, ..., 2an on a piece of paper. Now he wonders, what minimum number of integers of form 2b (b ≥ 0)need to be added to the piece of paper so that the sum of all integers written on the paper equalled 2v - 1 for some integer v (v ≥ 0).

    Help Ivan, find the required quantity of numbers.

    Input

    The first line contains integer n (1 ≤ n ≤ 105). The second input line contains n space-separated integers a1, a2, ..., an(0 ≤ ai ≤ 2·109). It is guaranteed that a1 ≤ a2 ≤ ... ≤ an.

    Output

    Print a single integer — the answer to the problem.

    Examples
    input
    4
    0 1 1 1
    output
    0
    input
    1
    3
    output
    3

    set数据结构的应用,
    #include <set>
    一个集合(set)是一个容器,它其中所包含的元素的值是唯一的。
    集和多集的区别是:set支持唯一键值,set中的值都是特定的,而且只出现一次;而multiset中可以出现副本键,同一值可以出现多次。
     
    begin() 返回指向第一个元素的迭代器
    clear() 清除所有元素
    count() 返回某个值元素的个数
    empty() 如果集合为空,返回true(真)
    end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
    equal_range() 返回集合中与给定值相等的上下限的两个迭代器
    erase() 删除集合中的元素
    find() 返回一个指向被查找到元素的迭代器,如果没找到则返回end()
    get_allocator() 返回集合的分配器
    insert() 在集合中插入元素
    lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
    key_comp() 返回一个用于元素间值比较的函数
    max_size() 返回集合能容纳的元素的最大限值
    rbegin() 返回指向集合中最后一个元素的反向迭代器
    rend() 返回指向集合中第一个元素的反向迭代器
    size() 集合中元素的数目
    swap() 交换两个集合变量
    upper_bound() 返回大于某个值元素的迭代器
    value_comp() 返回一个用于比较元素间的值的函数
     
    #include<iostream>
    #include<cstdio>
    #include<set>
    using namespace std;
    
    set<int> s;
    
    int main()
    {
        int n,maxn=0;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            int num;
            scanf("%d",&num);
            while(s.count(num))
            {
                s.erase(num);
                num++;
            }
            s.insert(num);
            maxn=max(maxn,num);
        }
        printf("%d
    ",maxn-s.size()+1);
        return 0;
    }
  • 相关阅读:
    js没有重载
    零基础学习hadoop到上手工作线路指导(初级篇)
    hadoop1.x和2.x的一些主要区别
    LIBCURL教程
    钩子函数大全(2)
    Visual Studio快捷键
    Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo
    Hadoop2.7.1安装与配置
    超详细单机版搭建hadoop环境图文解析
    Windows下运行Hadoop
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5399502.html
Copyright © 2020-2023  润新知