求助 abc E
  • 板块学术版
  • 楼主_Ch1F4N_
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/1/15 21:44
  • 上次更新2023/10/24 04:04:47
查看原帖
求助 abc E
520748
_Ch1F4N_楼主2023/1/15 21:44

E 怎么处理环(也就是最近的休息日是下周)

这是我的链的代码,请求各位帮忙一下环的情况。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn =5000+114;
int f[maxn][maxn];
int a[maxn],n;
int pre[maxn]; 
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) pre[i]=pre[i-1]+a[i];
	for(int i=1;i<=n;i++){
		for(int j=0;j<i;j++){
			int t=(i-ceil((j+i)*1.0/2));
			//cout<<i<<' '<<j<<' '<<t<<' '<<pre[2*t]-pre[t]<<'\n';
			if(j!=0)
				f[i][i]=max(f[i][i],f[i-1][j]-(pre[2*t-((i+j)%2==0?1:0)]-pre[t])+(pre[t-((i+j)%2==0?1:0)]));
			else 
				f[i][i]=max(f[i][i],pre[i-1]);
			//cout<<i<<' '<<j<<' '<<f[i][i]<<' '<<f[i-1][j]<<'\n';
			if(j!=0)
				f[i][j]=f[i-1][j]+a[i-j];
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++) ans=max(ans,f[n][i]);
	cout<<ans;
}
// 1 2 3 4 5
//   1 2 3
//   1 2 1
// 1 2 3 4 5 6 7
//   1 2 3 4 5
//   1 2 3 2 1
//t=3
//1 2 3 4 5 6 7 8
//  1 2 3 4 5 6
//  1 2 3 3 2 1
//t=3
//
2023/1/15 21:44
加载中...