1
0

洛谷-P11233.cpp 722 B

123456
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <limits>
  4. #include <vector>
  5. using namespace std;
  6. int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin>>T;while(T--){int n;cin>>n;vector<int>a(n);int maximum=0;for(int&x:a)cin>>x,maximum=max(maximum,x);const long long NEG=numeric_limits<long long>::min()/4;vector<long long>base(maximum+1,NEG);base[0]=0;long long add=0,best_base=0;int current=a[0];for(int i=1;i<n;++i){int y=a[i];long long switch_value=best_base+add;if(base[y]!=NEG)switch_value=max(switch_value,base[y]+add+y);if(y==current)add+=y;long long new_base=switch_value-add;if(new_base>base[current]){base[current]=new_base;best_base=max(best_base,new_base);}current=y;}cout<<best_base+add<<'\n';}}