题目
原题链接: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;
}