zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Actor
    spring mybatis circular reference
    MyBatis实现SaveOrUpdate
    Java SpringMVC实现国际化整合案例分析(i18n) 专题
    Spring Boot MyBatis 通用Mapper插件集成
    Spring Boot Servlet
    Android WebView 开发详解(二)
    Android与设计模式——观察者(Observer)模式
    Android系统设置— android.provider.Settings
    Android PNG渐变背景图片失真问题 getWindow().setFormat(PixelFormat.RGBA_8888);
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5399502.html
Copyright © 2011-2022 走看看