[codevs1507] 酒厂选址

来源:互联网 发布:iptv机顶盒安装软件 编辑:程序博客网 时间:2024/04/30 16:09

题目链接

题解:前缀和优化查询代价

#include <iostream>#include <cstdio>#include <climits> using namespace std;const int M=10005;int n,m,dis,a,b;long long c;int d[M],z[M];long long sum[M];void init(){    cin>>n;    for(int i=1;i<=n;i++)    {        scanf("%d%d",&z[i],&d[i]);        sum[i]=sum[i-1]+d[i];    }}void work(){    long long ans=LLONG_MAX;    for(int i=1;i<=n;i++)    {        long long tot=0;        for(int j=1;j<=n;j++)        {            a=max(i,j),b=min(i,j),c=sum[a]-sum[b-1]-d[a];            dis=min(c,sum[n]-c);            tot+=dis*z[j];        }        ans=min(ans,tot);    }    printf("%lld\n",ans);}int main(){    init();    work();    return 0;}
0 0