CodeFoeces-455A

题目

原题链接:A. Boredom

题意

有n个数的数组a,每选取一个数ak,则删除所有ak-1和ak+1的数和当前的ak,问最大能取到多少。参照了其他人的思路。

代码

#include<bits/stdc++.h>
typedef long long ll;
ll max(ll a,ll b){return a>b?a:b;}
int main()
{
    int n,t,s[100001]={0};
    scanf("%d",&n);
    for(int i=0; i<n; i++) {
        scanf("%d",&t);
        s[t]++;
    }
    ll p=0,q=0;
    for(int i=1;i<100001;i++){
        ll tmp=p+1LL*i*s[i];
        p=max(p,q);
        q=tmp;
    }
    printf("%lld\n",max(p,q));
    return 0;
}

推荐阅读更多精彩内容