• 7月25日训练赛FZU2168前缀和


    这题暴力的时间复杂度为O(N*M)会超时,怎么办?当时想到了递推的方法,后面晏队说这是一类前缀和的题。。。说下递推方程吧,b[i]=b[i-1]+m*a[i]-c[i-1],b[i]表示以i结尾前M个数字的参考指数,c[i]表示以i结尾前M个数字的和,这样时间复杂度就是O(N)啦~
    Problem 2168 防守阵地 I

    Accept: 375    Submit: 1278
    Time Limit: 3000 mSec    Memory Limit : 32768 KB

     Problem Description

    部队中共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,按重要程度从低到高排序,依次以数字1到M标注每个地点的重要程度,指挥部将选择M个士兵依次进入指定地点进行防守任务,能力指数为X的士兵防守重要程度为Y的地点将得到X*Y的参考指数。现在士兵们排成一排,请你选择出连续的M个士兵依次参加防守,使得总的参考指数值最大。

     Input

    输入包含多组数据。

    输入第一行有两个整数N,M(1<=N<=1000000,1<=M<=1000),第二行N个整数表示每个士兵对应的能力指数Xi(1<=Xi<=1000)。

    对于30%的数据1<=M<=N<=1000。

     Output

    输出一个整数,为最大的参考指数总和。

     Sample Input

    5 3 2 1 3 1 4

     Sample Output

    17
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 __int64 a[1000010],sum[1000010],b[1000010],c[1000010];
     7 int main()
     8 {
     9     __int64 n,m,i,j,k,t,MAX;
    10     while(~scanf("%I64d%I64d",&n,&m))
    11     {
    12         memset(sum,0,sizeof(sum));
    13         memset(b,0,sizeof(b));
    14         for(i=1;i<=n;i++)
    15         {
    16             scanf("%I64d",&a[i]);
    17             sum[i]=a[i];
    18             c[i]=a[i];
    19         }
    20         for(i=1;i<n;i++)
    21             sum[i+1]+=sum[i];
    22         for(i=m;i<=n;i++)
    23             c[i]=sum[i]-sum[i-m];
    24         for(i=1;i<=m;i++)
    25         {
    26             b[m]+=a[i]*i;
    27         }
    28         MAX=b[m];
    29         for(i=m+1;i<=n;i++)
    30         {
    31             b[i]=b[i-1]+m*a[i]-c[i-1];
    32             MAX=max(MAX,b[i]);
    33         }
    34         printf("%I64d
    ",MAX);
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    [文摘20070723]最经典的爱情观
    [转]ASP .Net C# 下 Word开发资料
    [引]如何藉由使用 Visual C# . NET 處理 Word 中的事件
    简单的搭建Web系统常用的框架页面
    Gentle 简单配置方法之一种
    在 可编辑的 Div 的 光标位置 插入 文字 或 HTML
    [转]使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
    VS2005 添加 Microsoft.Office.Tools.Word.dll 等引用
    要事第一 事不过三
    VC slider用法
  • 原文地址:https://www.cnblogs.com/zero-zz/p/4678054.html
Copyright © 2020-2023  润新知