zoukankan      html  css  js  c++  java
  • E. Boxers

    E. Boxers

    给定N个数字,每个数字可以加一或者减一

    使得结果集合中不同数字个数最多

    贪心

    用桶装数

    假如相同的数字$i$超过三个,则上面$i+1$,下面$i-1$都可以分一个

    如果相同数字$i$只有两个,优先$i-1$

    如果只有一个也要优先$i-1$

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define sc(x) scanf("%I64d",&x);
    #define read(A) for(int i=0;i<4*N;i++) scanf("%I64d",&A[i]);
    #define P pair<ll,ll>
    ll N;
    ll q;
    ll A[150005];
    bool B[150005];
    int main()
    {
        sc(N);
        for(int i=0; i<N; i++)
        {
            sc(q);
            A[q]++;
        }
        for(int i=1; i<=150001; i++)
        {
            if(A[i]>=3)
            {
                if(i>1)
                {
                    //  A[i-1]++;
                    B[i-1]=1;
                }
                B[i]=1;
                B[i+1]=1;
            }
            else if(A[i]==2)
            {
                if(i>1&&B[i-1]==0)
                {
                    B[i-1]=1;
                }
                else if(B[i+1]==0)
                {
                    B[i+1]=1;
                }
                B[i]=1;
            }
            else if(A[i]==1)
            {
                //cout<<i<<B[i]<<endl;
                if(i>1&&B[i-1]==0)B[i-1]=1;
                else if(B[i]==1)B[i+1]=1;
                else B[i]=1;
            }
        }
        int ans=0;
        for(int i=1; i<=150001; i++)
        {
            if(B[i]){ans++;//cout<<i<<endl;
            }
     
        }
        cout<<ans<<'
    ';
    }
  • 相关阅读:
    Mysql一些复杂的语句
    Tomcat部署记事
    [转]Java中的事务
    Junit单元测试笔记
    Mysql之执行计划
    当产品部署出现问题时
    CSS之绝对定位那些事
    CSS之浮动那些事
    Tomcat一些小事
    NEC的学习笔记
  • 原文地址:https://www.cnblogs.com/liulex/p/11355196.html
Copyright © 2011-2022 走看看