您的位置:首页 > 其它

CF260--C--dp<最大不连续子序列和>

2014-08-10 10:26 204 查看
啊 .... 这次的CF我正好没去做啊=-= 那晚 电脑突然神经质了 各种网页超慢打开。。。

更坑的是 持续了1个多小时 都搞的我想 重装了 .... MD 又可以正常访问了 卧槽*******

但 巧的是 那时候 正好快开始CF了 一下子 没心情去做了

        touch me

今天 去看了下 就是前几天 做的那个 最大不连续子序列和 我也特别提过 =-=

好忧伤....

  

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

typedef long long LL;
const int size = 100000;
LL cnt[size];
LL dp[size];

int main()
{
int n , num , mmax;
LL ans;
while( cin >> n )
{
memset( cnt , 0 , sizeof(cnt) );
mmax = 0;
for( int i = 1 ; i<=n ; i++ )
{
cin >> num;
cnt[ num ] ++;
if( mmax < num )
mmax = num;
}
dp[1] = cnt[1]*1;
dp[2] = cnt[2]*2;
ans = max( dp[1] , dp[2] );
for( int i = 3 ; i<=mmax ; i++ )
{
dp[i] = max( dp[i-2] , dp[i-3] ) + cnt[i]*i;
if( ans < dp[i] )
ans = dp[i];
}
cout << ans << endl;
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: