zoukankan      html  css  js  c++  java
  • 牛客小白月赛5 I 区间 (interval) 【前缀和】

    链接:https://www.nowcoder.com/acm/contest/135/I

    题目描述

        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

    说明

     
    思路:
     
    使用 懒标记数组,标记询问操作,最后统一计算。
    题目中问的 区间和 可以使用 For 从头加到尾,也可在统一处理标记数组的时候求 前缀和,然后  sum[r] - sum[l-1]
     
    AC代码:
     1 #include <cstdio>
     2 #include <iostream>
     3 using namespace std;
     4 const int MAXN=1000000+5;
     5 long long flag[MAXN];
     6 int ele[MAXN];
     7 int main(){
     8     int n,M;
     9     cin>>n>>M;
    10     for(int i=1;i<=n;i++)
    11         scanf("%d",&ele[i]);
    12     int q,L,R,P;
    13     for(int i=0;i<M;i++){
    14         cin>>q>>L>>R>>P;
    15         if(q==1){
    16             flag[L]-=P;
    17             flag[R+1]+=P;
    18         }else{
    19             flag[L]+=P;
    20             flag[R+1]-=P;
    21         }
    22     }
    23  
    24  
    25     int l,r;
    26     cin>>l>>r;
    27     long long ans=0;
    28     long long tmp=0;
    29     for(int i=1;i<=n;i++){
    30         tmp+=flag[i];
    31         ele[i]=ele[i]+tmp;
    32     }
    33      
    34     for(int i=l;i<=r;i++)
    35         ans+=ele[i];
    36      
    37  
    38      
    39     cout<<ans<<endl;
    40     return 0;
    41 }
  • 相关阅读:
    让photoshop cc 支持 webp格式
    DedeCMS文章页去img图片width和height属性
    DedeCMS提交自定义表单加入验证码功能
    php session的操作
    使用jQuery,实现完美的表单异步提交
    Windows Server 2003 IIS6.0+PHP5(FastCGI)+MySQL5环境搭建教程
    BT之下拉菜单
    慕课网上的Bootstrap学习(二)
    表单控件状态(禁用状态)
    在慕课学习Bootstrap
  • 原文地址:https://www.cnblogs.com/TianyuSu/p/9383106.html
Copyright © 2011-2022 走看看