zoukankan      html  css  js  c++  java
  • bzoj 1811: [Ioi2005]mea 贪心,乱搞

    [Ioi2005]mea

    Time Limit: 20 Sec  Memory Limit: 64 MB
    Submit: 690  Solved: 257
    [Submit][Status][Discuss]

    Description

    考虑一个非递减的整数序列 S1,....Sn+1(Si<=Si+1 1<=i<=n)。 序列M1...Mn是定义在序列S的基础上,关系式为 Mi=( Si + S(i+1) )/2, 1<=i<=n, 序列M叫做序列S的平均数序列。例如序列1,2,2,4的平均数序列为 1.5,2,3.注意到平均数序列中的元素可能为小数。但是本题的任务只是处理平均数序列都为整数的情况。 给出一个n个数字的非递减的整数序列M1,M2...Mn.请你计算出:序列S,S1...S(n+1)的平均序列是M1,...,Mn。 求满足以上条件的序列S的总个数。 任务: * 从标准输入文件中读入一个非递减的整数序列。 * 计算出平均序列是给出序列的整数序列的总个数。 * 把计算结果写到标准输出文件中。

    Input

    输入文件的第一行包含一个整数n(2<=n<=5 000 000).接下来的n行包含了这个给出的整数序列M1,..,Mn. 第i+1行包含一个整数Mi(1<=mi<=1000000000).对于本题,50%的测试数据中n<=1000,0<=Mi<=20000.

    Output

    输出文件仅一行,即所求答案。

    Sample Input

    3
    2
    5
    9

    Sample Output

    4

    HINT

    本题一共存在4种序列, 他们的平均数序列都是2,3,9。这四种序列如下:
    * 2,2,8,10
    * 1,3,7,11
    * 0,4,6,12
    *-1,5,5,13

    Source

     题解:这道题目可以用两个指针来卡
       

       比如说这个图,可以用两个指针来卡,最小的波动范围即为答案。

     1 #include<cstring>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<iostream>
     5 #include<cmath>
     6 #include<queue>
     7 
     8 #define N 5000007
     9 using namespace std;
    10 inline int read()
    11 {
    12     int x=0,f=1;char ch=getchar();
    13     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    14     while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
    15     return x*f;
    16 }
    17 
    18 int n,l,r,L,R;
    19 int a[N];
    20 
    21 int main()
    22 {
    23     n=read(),L=l=a[1]=read(),R=r=a[2]=read();
    24     for (int i=3;i<=n;i++)
    25     {
    26         a[i]=read();
    27         int k=a[i]-a[i-1];
    28         if (i&1)
    29         {
    30             L=R-k;
    31             l=max(l,L);
    32         }
    33         else
    34         {
    35             R=L+k;
    36             r=min(r,R);
    37         }
    38     }
    39     if (r-l<0) puts("0");
    40     else printf("%d
    ",r-l+1);
    41 }
  • 相关阅读:
    用Python完成一个汇率转换器
    鸿蒙如何用JS开发智能手表App
    鸿蒙如何用JS开发智能手表App
    SAP Spartacus SplitViewComponent Migration 的一个具体例子
    SAP Spartacus B2B 页面 Popover Component 的条件显示逻辑
    SAP Spartacus 升级时关于 schematics 的更新
    SAP Spartacus B2B 页面 Disable 按钮的显示原理
    SAP Spartacus B2B 页面 Disable Confirmation 对话框的显示原理
    通过 Feature Level 动态控制 SAP Spartacus 的页面显示
    SAP Commerce Cloud Build Manifest Components
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/8847539.html
Copyright © 2011-2022 走看看