zoukankan      html  css  js  c++  java
  • 区间 (interval)

     牛客小白月赛5 I 区间 (interval)

    题目:

     链接:https://www.nowcoder.com/acm/contest/135/I
    来源:牛客网

    时间限制:C/C++ 2秒,其他语言4秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

        Apojacsleam喜欢数组。

        他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作:

            操作一:将a[L]-a[R]内的元素都加上P

            操作二:将a[L]-a[R]内的元素都减去P

        最后询问a[l]-a[r]内的元素之和?
        请认真看题干及输入描述。

    输入描述:

    输入共M+3行:

    第一行两个数,n,M,意义如“题目描述”

    第二行n个数,描述数组。

    第3-M+2行,共M行,每行四个数,q,L,R,P,若q为1则表示执行操作2,否则为执行操作1

    第4行,两个正整数l,r

    输出描述:

    一个正整数,为a[l]-a[r]内的元素之和
    示例1

    输入

    复制
    10 5
    1 2 3 4 5 6 7 8 9 10
    1 1 5 5
    1 2 3 6
    0 2 5 5 
    0 2 5 8
    1 4 9 6
    2 7

    输出

    复制
    23

    说明

     

    思路:

         数组a保存每个数

         数组cha记录每一个数和前一位的差,区间(l,r)加上x: 区间首端 cha[l] 加上x, 区间尾端+1位置cha[r+x]减去x

         对cha求前缀和得出所有区间修改操作后,每个位置的数

         再求一次前缀和,得出答案

      

    代码:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    ll a[1100000],cha[1100000];
    
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            cha[i]=a[i]-a[i-1]; //求差分序列
        }
        while(m--){
            int q,l,r,p;
            scanf("%d%d%d%d",&q,&l,&r,&p);
            if(q==1)p=-p;
            cha[l]+=p;
            cha[r+1]-=p;
        }
        ///得到操作后的每个数
        for(int i=1;i<=n+7;i++){
            cha[i]+=cha[i-1];
        }
        ///求前缀和
        for(int i=1;i<=n+7;i++){
            cha[i]+=cha[i-1];
        }
    
        int l,r;
        scanf("%d%d",&l,&r);
        printf("%lld
    ",cha[r]-cha[l-1]);
    
    
        return 0;
    }
  • 相关阅读:
    完全二叉树求结点左右孩子编号
    while(p)的作用
    数组和链表的区别
    Seqlist L 与 Seqlist *L的区别
    exit和return
    java EE 的页面获得路径
    如何理解asp.net的AutoEventWireup
    asp.net的服务器控件客户端空件的区别以及如何刷新页面不靠数据库数据停留在页面
    外部样式?内联样式?内部样式表?区别
    html 与 htm的区别
  • 原文地址:https://www.cnblogs.com/longl/p/9353506.html
Copyright © 2011-2022 走看看