这啥呀
查看原帖
这啥呀
757715
Rt__楼主2024/10/30 08:37

O(n2)O(n^2) 做法,为什么 #5 ~ #10 对,#1 ~ #4 错?

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
const int N = 2010;

ll a[N];
ll f[N][N];

signed main(){
   int t;
   cin >> t;
   while(t --){
   	memset(f, 0, sizeof f);
   	int n;
   	cin >> n;
   	for(int i = 1; i <= n; i ++){
   		cin >> a[i];
   	}
   	ll maxx = 0;
   	for(int i = 1; i < n; i ++){
   		for(int j = 1; j < i; j ++){
   			ll mid = 0;
   			if(a[i] == a[i + 1])mid = a[i];	
   			f[i + 1][j] = max(f[i + 1][j], f[i][j] + mid);
   			mid = 0;
   			if(a[j] == a[i + 1])mid = a[j];
   			f[i + 1][i] = max(f[i + 1][i], f[i][j] + mid);
   		}
   	}
   	for(int i = 1; i <= n; i ++){
   		for(int j = 1; j < i; j ++){
   			maxx = max(maxx, f[i][j]);
   		}
   	}
   	cout << maxx << endl;
   }
   return 0;
}
2024/10/30 08:37
加载中...