A题好像数据弱了
我的代码在n为1的时候输出的结果是0,但是过了,应该没有n为1的数据,建议添加
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define fi first #define se second typedef vector<vector<ll>> Mat; const int N=5e3+10,mod=2,inf=2e9+18; const double pi=acos(-1.0),esp=1e-8; const ll INF=1e18; ll a[N]; int n; ll dp[N][N]; ll dfs(int l,int r,ll s){ if(l==r)return a[l]; if(dp[l][r]!=-1)return dp[l][r]; dp[l][r]=max(s-dfs((l-1+n)%n,r,s-a[l]),s-dfs(l, (r+1)%n,s-a[r])); return dp[l][r]; } void solve(){ ll ans=0,s=0; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; s+=a[i]; for(int j=0;j<n;j++){ dp[i][j]=-1; } } for(int i=0;i<n;i++) ans=max(ans,s-dfs((i-1+n)%n,(i+1)%n,s-a[i])); cout<<ans<<'\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int t=1; cin>>t; while(t--) solve(); return 0; }