数据略水
查看原帖
数据略水
1049265
EityDawn楼主2023/12/16 19:06

O(n2)O(n^2)过了

#include<iostream>
#include<cstring>
#define int long long
#define K dis[i]
using namespace std;
const int N=2e5;
int sum[N],k;
int dp[N];
int dis[N];
int n;
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n;
	int tot=0;
	for(int i=1;i<=n;i++)
		cin>>sum[i]>>dis[i];
	for(int i=n;i>=1;i--) dis[i]+=dis[i+1];
	for(int i=1;i<=n;i++) tot+=dis[i]*sum[i],sum[i]+=sum[i-1];;
	int ans=0x7ffffffffffff;
	memset(dp,0x7f,sizeof(dp));
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<i;j++)
			dp[i]=min(dp[i],tot-dis[j]*sum[j]-dis[i]*(sum[i]-sum[j]));
		ans=min(dp[i],ans);
	}	
	cout<<ans;
	return 0;
}
2023/12/16 19:06
加载中...