求优化dp思路
  • 板块灌水区
  • 楼主Martlet
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/2 16:27
  • 上次更新2023/11/3 06:20:10
查看原帖
求优化dp思路
543717
Martlet楼主2023/8/2 16:27

对于所有数据:1 < n,m < 10^6, 1<ai<100。

我会O(N^2)的做法;

#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[1000100],dp[1000100];
int main(){
	cin>>n>>m;
	for(int i = 1;i <= n;i++){
		cin>>a[i];
		a[i]+=a[i-1];
	}
	memset(dp,0x3f,sizeof(dp));
	dp[0] = 0;
	for(int i = 1;i <= n;i++){
		for(int j = 0;j <= i-1;j++){
			dp[i] = min(dp[i],dp[j]+(a[i]-a[j])*(a[i]-a[j])+m);
		}
	}
	cout<<dp[n];
	return 0;
} 

但不知道怎么优化

2023/8/2 16:27
加载中...