Binary Indexed Tree 2D

树状数组(Binary Indexed Tree),看这一篇就够了 定义 根据维基百科的定义: A Fenwick tree or binary indexed tree is a data structure that can efficiently update elements and calculate prefix sums in a table of numbers. 也就是说,所谓树状数组,或称Binary Indexed Tree,... 阅读详情

    #include <cstdio>
    #include <cstdlib>
    #include <climits>
    #include <cstring>
    #include <algorithm>

    using namespace std;
    int map[1015][1015];

    void update(int x,int y, int n)
    {
        for(int i=x;i<=1005;i+=(i&(-i)))
        {
            for(int j=y;j<=1005;j+=(j&(-j)))
            {
                map[i][j]+=n;
            }
        }
    }

    int sum(int x,int y)
    {
        int s = 0;
        for(int i=x;i>=1;i-=(i&(-i)))
        {
            for(int j=y;j>=1;j-=(j&(-j)))
            {
                s+=map[i][j];
            }
        }
        return s;
    }

    int main(){
//        freopen("exp.in","r",stdin);
        int t, q;
        char s[3];
        int x1,x2,y1,y2,n1;
        scanf("%d",&t);
        for(int i=1;i<=t;i++)
        {
            printf("Case %d:\n",i);
            memset(map,0,sizeof(map));
            for(int j=1;j<=1005;j++)
                for(int k = 1;k<=1005;k++)
                    update(j,k,1);

            scanf("%d",&q);
            for(int j=1;j<=q;j++)
            {

                scanf("%s",s);
                if(s[0]=='S')
                {
                        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
                        if(x1>x2)   swap(x1,x2);
                        if(y1>y2)   swap(y1,y2);
                        printf("%d\n",sum(x2+1,y2+1)+sum(x1,y1)-sum(x1,y2+1)-sum(x2+1,y1));
                }
                else if(s[0]=='A')
                {
                        scanf("%d%d%d",&x1,&y1,&n1);
                        update(x1+1,y1+1,n1);
                }
                else if(s[0]=='D')
                {
                        scanf("%d%d%d",&x1,&y1,&n1);
                        int v = sum(x1+1,y1+1)+sum(x1,y1)-sum(x1,y1+1)-sum(x1+1,y1);
                        n1=(n1-v>0)?v:n1;
                        update(x1+1,y1+1,-n1);
                }
                else if(s[0]=='M')
                {
                        scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n1);
                        int v = sum(x1+1,y1+1)+sum(x1,y1)-sum(x1,y1+1)-sum(x1+1,y1);
                        n1=(n1-v)>0?v:n1;
                        update(x1+1,y1+1,-n1);
                        update(x2+1,y2+1,n1);
                }
            }
        }
//        fclose(stdin);
        return 0;
    }


Code From Hdu 1982

SAP Joule for Consultants 与 Joule for Developers 全面解读 SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。 阅读详情

相关推荐

文档信息抽取技术:从非结构化文本到结构化信息的旅程

文档信息抽取技术是一种将非结构化文本转化为结构化信息的技术。这种技术可以从各类文档中自动提取出如实体、关系和其他重要信息,并将它们转化为方便计算机进一步处理和分析的格式。

INTSIG的博客 979

Binary Indexed Tree 2D 分类: ACM TYPE ...

#include <cstdio> #include <cstdlib> #include <climits> #include <cstring> #include <algorithm> using namespace std; int map[1015][1015];...

weixin_33968104的博客 142

Wezterm的安装和简单配置

希望 wezterm 的主题配色,保持和 powershell 默认配色一致,也就是 Compell 主题。目的是在频繁使用 wezterm 时,原本的根据颜色判断文件信息(尤其是WSL里的Linux下,文件和目录颜色)依然可以使用。wezterm 默认用 cmd.exe, 我是 win11,希望默认用 powershell。

baiyu33的博客 4263

树状数组 Binary Indexed Trees

树状数组,英文名称是Binary Indexed Trees,又叫二分索引树。它是由二分索引方式构建的数组。由于其索引方式的特点,该数组中蕴含了一个树,树的每个结点都是是由数组元素构成,每个结点都表示了数组部分元素值的和。把数组和树联系起来,以数组的物理存储方式来表达树的逻辑架构,这和堆类似。 树状数组的构建方法: 假设原先的普通数组是这样的A[0],A[1],A[2]...A[n-1

LUCKYOJ 1337

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 211

Hi3516CV610 YOLOv8模型转换与部署实战:从源码到板端推理全流程解析

本文详细解析了将YOLOv8模型部署到Hi3516CV610开发板的全流程。内容涵盖从Ubuntu环境搭建、模型获取与验证,到关键的PyTorch模型转换为ONNX格式,并利用海思工具链量化生成板端可执行的.wk文件。最后,指导开发者编写板端C程序,完成视频流处理、NNIE推理及结果后处理,并提供了部署调试与性能优化的实用技巧。

weixin_29215815的博客 266

树状数组 ( Binary Indexed Tree,BIT,二分索引树 )

百度很多树状数组,唯有此篇一看就懂。 原文一、简介在有时,需要计算数组某个区间内的和,如果采用常规算法,每次求和时遍历一遍求和比较耗时间,而树状数组维护一个求和数组,将原数组的一些求和结果存在数组中,使用时直接用树状数组求和。最常用的求区间和问题,单点更新。二、建树 结构: 如上A代表原数组,而C代表树状数组。树状数组具有数组和树两个特性,在存储上以数组形式按顺序存储,在逻辑关系上,通过数组下

心之所向 1668

Android音频输出流实战:从AudioFlinger到HAL层的完整调用链解析

本文深入解析了Android音频输出流的完整调用链,从应用层的AudioTrack和AAudio API,到系统服务AudioFlinger的混音调度,最终抵达硬件抽象层(HAL)。文章结合实战经验,探讨了如何利用底层机制优化音频延迟、处理设备切换,并提供了性能调优与问题排查的具体方法,是开发高性能音频应用的实用指南。

weixin_29208327的博客 251

308. Range Sum Query 2D - Mutable

308. Range Sum Query 2D - Mutable方法1:Binary Indexed Tree / Fenwich TreeComplexity方法2: segment tree Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left...

wilzxu的博客 383

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

Robot_PLC_HMI_Automation 6724

ADS基础教程23 - 有限元电磁仿真(FEM)可视化操作

一、引言 二、FEM可视化操作流程1.打开可视化界面2.查看介质的网格3.设置网格颜色4.选择网格5.传感器选择6.编辑传感器7.选择频率8.动画 三、总结介绍了在ADS中如何进行FEM仿真场视图操作过程。

XZ_ZC的博客 1814

Leetcode: Range Sum Query 2D - Mutable && Summary: Binary Indexed Tree

Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2). Range Sum Query 2D The above r...

weixin_30827565的博客 122

告别传统RAG的痛点!Agent Skills让知识库检索更智能(本地知识库搭建新思路:用Agent Skills实现渐进式检索)

传统RAG在知识库检索中存在文档结构丢失、Token消耗大等问题 📚 Agent Skills通过分层索引、渐进式检索等设计,实现了更智能的本地知识库检索方案 🤖 本文详细介绍了Agent Skills的核心设计理念、与传统RAG的对比以及实践建议,帮助你搭建高效的知识库系统 ✅

XiaoqiangClub的博客 692

[luogu4054 JSOI2009] 计数问题(2D BIT)

[luogu4054 JSOI2009] 计数问题(2D BIT) 传送门 Solution 2D BIT模板 Code //By Menteur_Hxy #include &lt;cmath&gt; #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; ...

Tricksterism 198

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Binary Indexed Tree Template

//memset c 0 before use int c[MAXN]; //n -> update place //v -> update value void update(int n,int v) { for(;n<=MAXN;n+=(n&-n)) c[n]+=v; } //get the sum from 1 to n (BIT starts from 1) int read(i

Uni ACM 891

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Binary Indexed Trees

Archive Printable view Discuss this article Write for TopCoder Binary Indexed Trees  By boba5551 TopCoder Member Introduction Notation Basic idea Isolating the last digit Read c

pi9nc的专栏 2336

Binary indexed tree

Suitable for interval sum or prefix sum. Interval sum is just difference of two prefix sums. Compared with Segment Tree, Binary Indexed Tree requires less space and is easier to implement. BIT needs exactly n extra spaces, but Segment Tree needs approximat

UniversityGrass的博客 223

Binary Indexed Tree

比如你要查[1,7]的,你直接一看7的lowbit,1,那就算上c[7]=[7,7],然后跳到7-1=6去。再一看4的lowbit,4,那就算上c[4] = [1,4],然后跳到4-4=0去,到此跳出了树状数组,查询结束,返回和。例如你拆[1,13],那么递归到底部必然拆了[1,1] ⇒ [1,1],[1,2] ⇒ [2,2],[1,3] ⇒ [1,2] + [3,3]…那多出来的部分单算,比如[2:6],索引2上的1单独算就行了,复杂度O(n/B+B),由于B大概率比n小,那就是O(n/B))

lyh20021209的博客 986

树状数组(Binary Indexed Trees)树状数组详解(转载)

分类: 数据结构2013-09-10 21:15 124人阅读 评论(0) 收藏 举报 树状数组 目录(?)[+] 树状数组(Binary Indexed Trees) November 15, 2012 作者:Hawstein 出处:http://hawstein.com/posts/binary-indexed-trees.html 声

janvinal的专栏 740

树状数组(Binary Indexed Tree/Fenwick Tree)详解

树状数组是一个轻量级但功能强大的数据结构,特别适合处理前缀和查询和单点修改的问题。相比线段树,它的实现更简单,常数更小,但功能相对受限。在实际应用中,如果问题可以用树状数组解决,它通常是比线段树更好的选择。

mainjay 1216

Segment Tree, Interval Tree,Range Tree and Binary Indexed Tree

rt

zephyr_be_brave的专栏 1553

树状数组(Binary Indexed Trees)

作者:Hawstein 出处:http://hawstein.com/posts/binary-indexed-trees.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。 前言 本文翻译自TopCoder上的一篇文章: Binary Indexed Tr

我是传奇 1580

LeetCode10 Indexed tree

Binary Indexed Tree(Fenwick tree): 是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询) 原理: 树状数组是不需要建树的,通过lowbit来建立一个sum...

weixin_34092370的博客 137
上一篇: 博弈论入门小结
下一篇: short-path problem (Dijkstra)
梁千仞
博客等级 码龄15年 12粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值