CF260--C--dp<最大不连续子序列和>
啊 .... 这次的CF我正好没去做啊=-= 那晚 电脑突然神经质了 各种网页超慢打开。。。
更坑的是 持续了1个多小时 都搞的我想 重装了 .... MD 又可以正常访问了 卧槽*******
但 巧的是 那时候 正好快开始CF了 一下子 没心情去做了
今天 去看了下 就是前几天 做的那个 最大不连续子序列和 我也特别提过 =-=
好忧伤....
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 6 typedef long long LL; 7 const int size = 100000; 8 LL cnt[size]; 9 LL dp[size]; 10 11 int main() 12 { 13 int n , num , mmax; 14 LL ans; 15 while( cin >> n ) 16 { 17 memset( cnt , 0 , sizeof(cnt) ); 18 mmax = 0; 19 for( int i = 1 ; i<=n ; i++ ) 20 { 21 cin >> num; 22 cnt[ num ] ++; 23 if( mmax < num ) 24 mmax = num; 25 } 26 dp[1] = cnt[1]*1; 27 dp[2] = cnt[2]*2; 28 ans = max( dp[1] , dp[2] ); 29 for( int i = 3 ; i<=mmax ; i++ ) 30 { 31 dp[i] = max( dp[i-2] , dp[i-3] ) + cnt[i]*i; 32 if( ans < dp[i] ) 33 ans = dp[i]; 34 } 35 cout << ans << endl; 36 } 37 return 0; 38 }
just follow your heart