紫题求调
  • 板块CF229D Towers
  • 楼主f2_longtian
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/12/1 22:20
  • 上次更新2023/10/27 00:48:25
查看原帖
紫题求调
385952
f2_longtian楼主2022/12/1 22:20
#include<bits/stdc++.h>
using namespace std;
int sum[100010],f[100010],last[100010],a[100010];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++){
		sum[i]=sum[i-1]+a[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<i;j++){
			if(last[j]<sum[i]-sum[j]&&f[j]+i-(j+1)<f[i]){
				f[i]=f[j]+(i-(j+1));
				if(last[i]>sum[i]-sum[j]){
					last[i]=sum[i]-sum[j];
				}
			}
			
		}
	}
	cout<<f[n];
	return 0;
}
2022/12/1 22:20
加载中...