AcWing 300. 任务安排1
原题链接
中等
作者:
ZTEG
,
2019-11-08 15:34:08
,
所有人可见
,
阅读 2108
#include<bits/stdc++.h>
using namespace std;
long long n,s;
long long c[5005],t[5005];
long long dp[5005];
long long hc[5005];
long long ht[5005];
int main()
{
memset(dp,10,sizeof(dp));
dp[0]=0;
cin>>n;
cin>>s;
for(long long i=1;i<=n;i++)
{
cin>>t[i]>>c[i];
ht[i]=ht[i-1]+t[i];
}
for(long long i=n;i>=1;i--)
hc[i]=hc[i+1]+c[i];
for(long long i=1;i<=n;i++)
for(long long j=0;j<i;j++)
dp[i]=min(dp[i],dp[j]+s*hc[j+1]+ht[i]*(hc[j+1]-hc[i+1]));
cout<<dp[n];
}