给定一个n个正整数组成的数组_算法基础课acwing下载

给定一个n个正整数组成的数组_算法基础课acwing下载给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问数列中第 l∼r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,|A[i]|≤1


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:

C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。
Q l r,表示询问数列中第 l∼r 个数的和。
对于每个询问,输出一个整数表示答案。

输入格式
第一行两个整数 N,M。

第二行 N 个整数 A[i]。

接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。

输出格式
对于每个询问,输出一个整数表示答案。

每个答案占一行。

数据范围
1≤N,M≤105,
|d|≤10000,
|A[i]|≤109

输入样例:
10 5
1 2 3 4 5 6 7 8 9 10
Q 4 4
Q 1 10
Q 2 4
C 3 6 3
Q 2 4
输出样例:
4
55
9
15

题解
树状数组+差分

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int a[N];
long long d[N],trie1[N],trie2[N];
int lowbit(int x){ 
   
    return x & (-x);
}
int n,m;
void add(int x,ll y){ 
   
    int t = x;
    while(t <= n + 1){ 
   
        trie1[t] +=  y;
        t += lowbit(t);
    }
    t = x;
    while(t <= n + 1){ 
   
        trie2[t] =trie2[t] + (x * y);
        t += lowbit(t);
    }
}
ll query(int x){ 
   
    ll sum = 0;
    int t = x;
    while(t){ 
   
        sum += trie1[t];
        t -= lowbit(t);
    }
    sum = sum * (x + 1);
    t = x;
    while(t){ 
   
        sum -= trie2[t];
        t -= lowbit(t);
    }
    return sum;
}
int main(){ 
   
    cin>>n>>m;
    int x;
    for(int i = 1;i <= n;i ++){ 
   
        cin>>a[i];
        d[i] = a[i] - a[i - 1];
    }
    for(int i = 1;i <= n;i ++){ 
   
        add(i,d[i]);
    }
    char ch;
    int y,d;
    for(int i = 0;i < m;i ++){ 
   
        cin>>ch>>x>>y;
        if(ch == 'C')cin>>d;
        if(ch == 'Q'){ 
   
            cout<<query(y) - query(x - 1)<<endl;
        }
        else add(x,d),add(y + 1,-d);
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169100.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Linux初识[通俗易懂]

    Linux发展史简介Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生LinusTorvalds和后来陆续加入的众多爱好者共同开发

    2022年3月29日
  • 使用DbUtils实现CRUD

    使用DbUtils实现CRUD

    2022年1月2日
  • Java开发中BASE64Encoder的使用

    Java开发中BASE64Encoder的使用BASE64Encoder其实是在jkd中的,但是默认不开放,在API中也是找不到的所以先看看怎么将其导入:右击项目–buildpath–>>configurebuildpath–>>双击Accessrules–>>edit–>>add–>>修改为accessible,RulePatte…

    2022年6月24日
  • Web 3D机房,智能数字机房HTML5 WebGL(ThreeJS)匠心打造「建议收藏」

    Web 3D机房,智能数字机房HTML5 WebGL(ThreeJS)匠心打造「建议收藏」在H5使用3D技术门槛比较低了,它的基础是WebGL(ThreeJS),一个OpenGL的浏览器子集,支持大部分主要3D功能接口。目前主流的浏览器都有较好的支持,IE需要11。最近web3D机房研发告一段落,有时间整理这段时间的一些成果。主要涉及使用H5、js、WebGL技术。机房3D效果图机房线缆和走线架线缆的连接走向和连接关系是管理员关注的焦点。机架中…

    2022年5月5日
  • linux配置ip转发

    linux配置ip转发====ip转发======1、vim/etc/sysctl.conf修改配置net.ipv4.ip_forward=1重启sysctl-p2、192.168.1.1:3307转发到192.168.1.2:3307shell下执行:iptables-tnat-APREROUTING-ptcp–dport3307-jDNAT–to-de…

    2022年6月6日
  • IntelliJ IDEA配置Maven详解[通俗易懂]

    IntelliJ IDEA配置Maven详解[通俗易懂]1.下载Maven官方地址:http://maven.apache.org/download.cgi目前最新版是apache-maven-3.8.3版本,我当时使用的是apache-maven-3.5.2版本,大家也可以下载最新版本。Apache-maven-3.5.2下载地址:http://archive.apache.org/dist/maven/maven-3/下载后的版本如下:解压并新建一个本地仓库文件夹:2.配置本地仓库路径在MAVE_HOME/conf/setti

    2022年11月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号