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

HyperMesh实战:用Field工具搞定复杂载荷映射(附TCL脚本示例) 本文深入探讨了HyperMesh中Field工具在复杂载荷映射中的高级应用,包括从CSV到有限元网格的温度场映射全流程、稀疏数据处理技巧及TCL自动化脚本示例。通过Field工具,工程师可以高效实现CFD温度场到结构网格的精准映射,显著提升有限元分析的精度与效率。 阅读详情

相关推荐

300个fpga练手项目推荐

• 按键设置BPM,LED和蜂鸣器同步打拍(支持4/4、3/4拍)• 例:先实现DDR3控制器(基础),再构建视频处理流水线(集成)◦ 驱动小型e-Paper显示日期/时间(SPI接口,静态刷新)◦ 音频输入经FFT后,用LED柱状显示频率能量(8频段简化)◦ 通过HC-05模块接收手机指令,控制电机方向(前进/后退)• 随机点亮LED,用按钮响应,数码管显示反应时间(毫秒级)• 8个LED旋转闪烁,按钮停止后显示中奖编号(带减速动画)• 用4方向按键输入手势(如→→←↑),正确后点亮绿色LED。

qq_62784677的博客 7641

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

Spring AI RAG 生产级实战:从 0 构建企业智能知识库系统

Spring AI🎯统一的 API 抽象:屏蔽不同 AI 服务商的差异🎯开箱即用的集成:支持主流大模型和向量数据库🎯Spring 生态融合:与 Spring Boot、Spring Data 无缝集成🎯企业级特性:事务管理、监控、安全等RAG 架构:检索 + 增强 + 生成,解决 LLM 局限性Spring AI:统一的 API 抽象,简化 AI 应用开发向量数据库:pgvector 适合中小规模,Milvus 适合大规模文档处理:加载 → 分块 → 向量化 → 存储检索优化。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 407

树状数组(Binary Indexed Tree) 总结(ing)

推荐一篇很好的博客:http://www.cppblog.com/menjitianya/archive/2015/11/02/212171.html 一、树状数组的定义 基本定义:树状数组是利用二分的思想使得查询和修改的复杂度都为 log(n) 的数据结构,树状数组是通过前缀和思想,用来完成单点更新和区间查询的数据结构。 如上图,不难看出树状数组是一个不断地二分的过程。  如上图...

FFOYeah的博客 2047

域控制器开发避坑实录:从硬件设计到软件集成的5个关键挑战

本文深入剖析了域控制器开发中的5大关键挑战,从硬件选型到软件集成,涵盖智能驾驶芯片选择、实时性优化、AUTOSAR架构适配等核心问题。通过实战案例和数据对比,为工程师提供避坑指南,助力提升开发效率和系统可靠性。

weixin_29258297的博客 395

windows exe爬虫:exe抓包

在不知情所拦截应用使用的流量时,所以建议用Wireshark。本文利用python代码,实现自动拦截,写入pcap包,并用代码分析流量的协议。这样会在本地目录下生成capture_inbound.pcap,可以用wireshark分析,也可以利用python代码进行分析,如果使用python代码进行分析,需要借助pyshark或者scapy。使用的python WinDivert的包,当然前提也是需要安装Wireshark软件,设置环境变量,并安装pydirvert包。

youbingchen的博客 617

LWC 62:742. Closest Leaf in a Binary Tree

LWC 62:742. Closest Leaf in a Binary Tree传送门:743. 742. Closest Leaf in a Binary TreeProblem: Given a binary tree where every node has a unique value, and a target key k, find the closest leaf node to

Demon-初来驾到 850

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

jks212454的博客 5577

树状数组 Binary Indexed Trees

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

LUCKYOJ 1337

全球建筑物提取数据集(免费下载):微软/GlobalMLBuildingFootprints

这个是GitHub上的开源数据集: https://github.com/microsoft/GlobalMLBuildingFootprints 介绍 必应地图正在世界各地发布开放式建筑足迹。我们从 2014 年到 2021 年间的 Bing Maps 图像中检测到了 7.77 亿座建筑物,包括 Maxar 和 Airbus 的图像。数据可在 ODbL 下免费下载和使用。该数据集补充了我们的其他版本。 包括的地区 执照 此数据由 Microsoft 根据Open Dat..

此星光明博客 6290

OpenStack 2018 年终盘点

目录 文章目录目录前言OpenStack 一年来的成长NovaCinderNeutronIronicCyborgOctaviaKollaMagnumZunKuryr从 OpenStack 到 OpenInfra 前言 这是最好的时代,也是最坏的时代 — — 查尔斯·约翰·赫芬姆·狄更斯《双城记》 年关将至,闲暇之余,回顾我与 OpenStack 的 2018。 NOTE:仅作为个人见解,与公...

烟云的计算 3596

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

OpenClaw-遇到的问题- FailoverError: Model context window too small (4096 tokens). Minimum is 16000

摘要:OpenClaw配置文件中deepseek-reasoner模型的上下文窗口被默认设置为4096 tokens(实际支持128K),导致系统报错"Model context window too small"。解决方案是删除配置文件中的contextWindow和maxTokens字段,让系统自动获取模型真实能力,并重启OpenClaw服务。配置文件通常位于用户目录下的.openclaw/openclaw.json中。

直到世界的尽头 4163

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

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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的博客 987

树状数组(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、付费专栏及课程。

余额充值