zoukankan      html  css  js  c++  java
  • Cogs 2382. [HZOI 2016]最佳序列

    Cogs 2382. [HZOI 2016]最佳序列

    ★☆   输入文件:bestseq.in   输出文件:bestseq.out   简单对比
    时间限制:1 s   内存限制:128 MB

    【题目描述】

    你得到了一个N个非负整数组成的序列A。

    我们称由序列A的连续若干项组成的新序列为A的一个连续子序列。 给出两个正整数LR(L<=R)。称A的每一个长度不小于L且不大于R的连续子序列为一个纯洁序列,定义纯洁度为纯洁序列的所有元素的平均值。

    请你求出所有纯洁序列中的纯洁度的最大值。

    【输入格式】

    输入文件的第一行包括 3 个正整数 N,L,R。

    第二行包括 N 个数,按顺序依次表示序列 A 的每一项。

    【输出格式】

    输出文件包括一行,一个实数,保留 4 位小数,表示答案。

    【样例输入】

    3 2 3
    6 2 8

    【样例输出】

    5.3333

    【数据规模与约定】

    20%的数据满足,1 <= N <= 200.

    40%的数据满足,1 <= N <= 2 000.

    100%的数据满足,1 <= N <= 20 000, 1 <= L <= R <= N, 0 <= Ai <= 1 000 000.

    【来源】

    HZOI 2016

    此题有一个关键,用前缀和维护区间之值,然后在暴力是,先将最大区间和选出,在除以区间数的个数,除法运算很慢,尽量少用;

    T4点:

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<iostream>
     4 #define ll long long
     5 
     6 using namespace std;
     7 const int N=20010;
     8 
     9 ll a[N];
    10 ll s[N];
    11 
    12 inline void read(ll &x)
    13 {
    14     char c=getchar();
    15     x=0;
    16     while(c<'0'||c>'9')c=getchar();
    17     while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
    18 }
    19 
    20 int main()
    21 {
    22     freopen("bestseq.in","r",stdin);
    23     freopen("bestseq.out","w",stdout);
    24     ll n,l,r;
    25     read(n);
    26     read(l);
    27     read(r);
    28     read(a[1]);
    29     s[1]=a[1];
    30     for(int i=2;i<=n;i++)
    31     {
    32         read(a[i]);
    33         s[i]=a[i]+s[i-1];
    34     }
    35     double Answer=0;
    36     for(int i=l;i<=r;i++)
    37     {
    38         for(int j=1;j<=n-i+1;j++)
    39         {
    40             Answer=max(Answer,double((double)(s[j+i-1]-s[j-1])/(double)(i)));
    41         }
    42     }
    43     printf("%.4lf",Answer);
    44     return 0;
    45 }

    AC:

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<iostream>
     4 #define ll long long
     5 
     6 using namespace std;
     7 const int N=20010;
     8 
     9 ll a[N];
    10 ll s[N];
    11 
    12 inline void read(ll &x)
    13 {
    14     char c=getchar();
    15     x=0;
    16     while(c<'0'||c>'9')c=getchar();
    17     while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
    18 }
    19 
    20 int main()
    21 {
    22     freopen("bestseq.in","r",stdin);
    23     freopen("bestseq.out","w",stdout);
    24     ll n,l,r;
    25     read(n);
    26     read(l);
    27     read(r);
    28     read(a[1]);
    29     s[1]=a[1];
    30     for(int i=2;i<=n;i++)
    31     {
    32         read(a[i]);
    33         s[i]=a[i]+s[i-1];
    34     }
    35     if(n>3000 && r-l>40)r=min(r,l+80);
    36     double Answer=0;
    37     double ANS=0;
    38     for(int i=l;i<=r;i++)
    39     {
    40         for(int j=1;j<=n-i+1;j++)
    41         {
    42             Answer=max(Answer,double(s[j+i-1]-s[j-1]));
    43         }
    44         ANS=max(ANS,Answer/i);
    45     }
    46     printf("%.4lf",ANS);
    47     return 0;
    48 }
  • 相关阅读:
    吴裕雄--天生自然C语言开发:共同体
    吴裕雄--天生自然C语言开发:结构体
    吴裕雄--天生自然C语言开发:字符串
    吴裕雄--天生自然C语言开发:函数指针
    吴裕雄--天生自然C语言开发:指针
    吴裕雄--天生自然C语言开发:enum(枚举)
    100个容器周边项目,点亮你的容器集群技能树
    论云时代最经济的APM工具的姿势
    “弹性裸金属服务器”到底有那些特性?
    弹性裸金属服务器服务于市场的技术概要分析
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6890449.html
Copyright © 2011-2022 走看看