zoukankan      html  css  js  c++  java
  • 指数序列

     这个题是用map函数来做

    #include <bits/stdc++.h>
    using namespace std;
    int n,x,s,mx;
    set<int>ans;
    map<int,int>vis;
    int main()
    {
        ios::sync_with_stdio(false);
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>x;
            vis[x]++;
            ans.insert(x);
            mx=max(mx,x);
        }
        for(set<int>::iterator it=ans.begin();it!=ans.end();it++)
        {
            x=*it;
            int tmp=vis[x];
            vis[x]=tmp%2;
            if(vis[x]==0)s++;//统计被删除的数的个数
            int k=tmp/2;//将相同的两个数合并,合并后的数大小+1,个数+k
            if(!vis[x+1]&&k!=0)
            {
                ans.insert(x+1);//合并后的数大小+1
                mx=max(mx,x+1);
            }
            vis[x+1]+=k;//合并后的数的个数+k
        }
        printf("%d
    ",mx+1-ans.size()+s);
        return 0;
    }
    
    成功不是偶然的,失败也不是必然的。
  • 相关阅读:
    Python lambda函数
    python 获取日期
    <base>元素
    django--开发博客
    django修改时区,数据库
    django初探
    python创建虚拟环境
    资源记录页面
    组管理
    远程管理命令
  • 原文地址:https://www.cnblogs.com/zhuyukun/p/12322139.html
Copyright © 2011-2022 走看看