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;
    }
  • 相关阅读:
    以用户、组织结构和权限为例,论如何将基于关系型数据库的设计简化
    spring InitializingBean接口
    DelegatingFilterProxy
    组织机构权限系统的实现(工作流)
    activiti 引擎 数据库设计说明书
    modeler与activiti进行整合
    流程引擎的API和服务基础
    广东程序员在加利福尼亚
    开源 -- 机器学习相关报道
    国内一些大公司的开源项目
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5399502.html
Copyright © 2011-2022 走看看