码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 树状数组模板2【区间修改,单点询问】(线段树)


    题目描述:

    已知一个数列,你需要进行下面两种操作:

    1.将某区间每一个数数加上x

    2.求出该数列某个数的值

    输入格式:

    第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。

    第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。

    接下来M行每行包含2或4个整数,表示一个操作,具体如下:

    操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k

    操作2: 格式:2 x 含义:输出第x项的值

    输出格式:

    输出包含若干行整数,即为所有操作2的结果。

    样例输入:

    5 5
    1 5 4 2 3
    1 2 4 2
    2 3
    1 1 5 -1
    1 3 5 7
    2 4
    

    样例输出:

    6
    10
    

    提示:

    对于30%的数据:N<=8,M<=10

    对于70%的数据:N<=10000,M<=10000

    对于100%的数据:N<=500000,M<=500000

    样例说明:

    故输出结果为6、10

    时间限制: 1000ms
    空间限制: 128MB

    代码如下:

    1. #include<cstdio>
    2. #define ll long long
    3. ll n,q,k,x,y,s,a[500001]={},tree[500001]={};
    4. ll lowbit(ll num){
    5. return num&-num;
    6. }
    7. void add(ll s,ll num){
    8. for(ll i=s;i<=n;i+=lowbit(i)){
    9. tree[i]+=num;
    10. }
    11. }
    12. ll ask(ll s){
    13. ll ans=0;
    14. for(ll i=s;i>=1;i-=lowbit(i)){
    15. ans+=tree[i];
    16. }
    17. return ans;
    18. }
    19. int main(){
    20. scanf("%lld%lld",&n,&q);
    21. for(int i=1;i<=n;i++){
    22. scanf("%lld",&a[i]);
    23. }
    24. for(int i=1;i<=q;i++){
    25. scanf("%lld",&k);
    26. if(k==1){
    27. scanf("%lld%lld%lld",&x,&y,&s);
    28. add(x,s);
    29. add(y+1,-s);
    30. }
    31. if(k==2){
    32. scanf("%lld",&x);
    33. printf("%lld\n",a[x]+ask(x));
    34. }
    35. }
    36. }

     

  • 相关阅读:
    Azure | AZ-204 认证之旅-应用服务(一)
    Exposure X8标准版图片后期滤镜PS、LR等软件的插件
    c# .net6 在线条码打印基于
    【算法】算法题-20231118
    系统安全测试详解
    洛谷-线段覆盖-(区间排序问题总结)
    C 语言 时间函数使用技巧(汇总)
    【TDengine】 TDengine时序数据库的快速入门总结
    华清远见-JavaWeb学习总结
    【森城市】GIS数据漫谈(一)
  • 原文地址:https://blog.csdn.net/Annconda/article/details/128106092
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号