【树状数组】POJ 2155 Matrix

SAP 合并报表(EC-CS)完整方法论 + 全业务操作步骤 SAP合并报表(EC-CS)方法论与操作指南摘要 SAP EC-CS模块提供完整的集团合并解决方案,其核心方法论基于会计准则和集团管控逻辑,通过6大维度构建标准化合并体系:组织架构标准化、数据采集标准化、外币换算规则化、内部交易自动化抵消、股权与商誉规范化、报表出具灵活化。 实施过程分为两个阶段: 上线前配置阶段(12个步骤):包括合并架构搭建、科目表配置、外币规则设定、抵消规则定义等基础工作 日常操作阶段(10个步骤):涵盖数据报送、外币换算、内部对账、自动抵消、调整分录等月结流程 系统优势包括: 支持多 阅读详情

附一篇经典翻译,学习 树状数组  http://www.hawstein.com/posts/binary-indexed-trees.html

/**
 *  @author           johnsondu
 *  @time             2015-8-22
 *  @type             2D Binary Index Tree
 *  @strategy         假设翻转的是(x1,y1), (x2,y2)区域,则相当于
 *                      翻转(0, 0)~(x2, y2), 然后再翻转(0,0)~(x1-1, y2)
 *                       (0, 0)~(x2, y1-1), (0, 0)~(x1-1, y1-1);
 *                       因为翻转两次等于没有翻转。此处类比容斥原理
 *  @url              http://poj.org/problem?id=2155
 */

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
#include <map>
#include <vector>

using namespace std;

const int N = 1005;
int c[N][N], n, q;

int lowbit(int x)
{
    return (x & (-x));
}

void update(int x, int y)
{
    for(int i = x; i <= n; i += lowbit(i))
        for(int j = y; j <= n; j += lowbit(j))
            c[i][j] ++;
}

int query(int x, int y)
{
    int sum = 0;
    for(int i = x; i > 0; i -= lowbit(i))
        for(int j = y; j > 0; j -= lowbit(j))
            sum += c[i][j];
    return sum;
}

int main()
{
    int tcase;
    int x1, y1, x2, y2;
    scanf("%d", &tcase) ;
    while(tcase --) {
        memset(c, 0, sizeof(c));
        scanf("%d%d", &n, &q);
        for(int i = 0; i < q; i ++)
        {
            char command[5];
            scanf("%s", command);
            if(command[0] == 'C')
            {
                scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
                x1 ++; y1 ++; x2 ++; y2 ++;
                update(x2, y2);
                update(x1 - 1, y1 - 1);
                update(x1 - 1, y2);
                update(x2, y1 - 1);
            }
            else
            {
                scanf("%d%d", &x1, &y1);
                printf("%d\n", query(x1, y1) & 1);
            }
        }
        printf("\n");

    }

    return 0;
}


【软考】系统集成项目管理工程师(一)信息化知识 软考中级——系统集成项目管理工程师备考干货第一章:信息化知识。 阅读详情

相关推荐

433MHz无线通信避坑指南:如何解决信号干扰和误码问题

本文深入探讨433MHz无线通信中的信号干扰和误码问题,提供从射频前端设计到协议优化的全链路解决方案。通过天线匹配、电源噪声抑制、曼彻斯特编码改进及实时频点切换等技术,显著提升通信稳定性和距离。适合智能家居和工业无线控制系统的开发者参考。

weixin_29288313的博客 415

POJ2155 - Matrix(二维树状数组)

POJ2155 - Matrix 文章目录题目题解:代码 题目 给你一个二维矩阵,初始化为0,然后可以进行两次操作: C:x,y,x1,y2 对该小矩阵内的数进行取反 Q:查询某个点是0还是1 题解: C是区间修改,Q是单点查询, 我们将二维矩阵先简化成一维矩阵的情况,C是对一段区域[l,r]取反,我们没有必要对这段区域全部操作,我们只需要对点l和点(r+1)分别加1即可,然后查询k时,我们只需要求出k的前缀和,然后mod2即可 为什么? 如果,当k1在区间[l,r]里,k的前缀和比之前就了一个1,mod

qq_35975367的博客 566

Windows11 下 Detectron2 的安装与配置全攻略

本文提供了在Windows11系统下安装和配置Detectron2的完整教程。详细介绍了从环境准备、创建虚拟环境、安装PyTorch与CUDA,到修改源码、编译安装以及运行验证Demo的全过程,帮助开发者克服Windows平台上的常见问题,成功部署这一强大的计算机视觉库。

weixin_29081703的博客 244

二维树状数组-POJ 2155 Matrix

什么是树状数组? 简单来说,就是暴力遍历数组来解决区间问题等,不过遍历的路径使用了位运算来进行压缩,复杂度是O(log2(n))这样就不会超时了(为所欲为?)。 lowbit()操作 其核心是神奇的lowbit操作,lowbit(x)=x&(-x),它的功能是找到x的二进制数的最后一个1,原理是利用负数的补码表示,补码是原码取反加一。例如x=6=00000110(2),-x=x补=11111010(2),那么lowbit(x)=x&(-x)=10(2)=2。 从lowbit()引出数组a[],a[x]的值

有一分热,发一分光。 5181

Windows系统下AutoDock 4.2.6安装避坑指南(附MGLTools配置技巧)

本文详细介绍了在Windows系统下安装和配置AutoDock 4.2.6的完整流程,特别针对分子对接研究中常见的软件安装问题提供了解决方案。从环境准备、分步安装到常见报错处理,涵盖MGLTools配置技巧、工作目录设置和环境变量优化,帮助科研人员快速搭建稳定的分子对接平台。

weixin_29234239的博客 311

Zynq远程更新程序实战:从emmc到flash的完整方案解析

本文详细解析了Zynq远程更新程序的完整方案,重点探讨了从emmc到flash的实战操作。通过硬件连接限制破解、emmc配置技巧、flash擦写策略优化等关键技术点,提供了可靠的远程更新解决方案,特别适合需要频繁更新boot.bin的应用场景。

weixin_29163797的博客 179

二维树状数组_POJ2155_Matrix

POJ2299_Ultra-QuickSort题目连接这道题我用的是二维树状数组来做得,做法比较简单,都是二维树状数组的基本操作。 操作1: C: 给一个子矩阵进行非操作,这个可以用操作次数的叠加来进行,初始操作次数为0,然后每进行一次操作就加1,用的是树状数组更新函数,主要是对四个区域,即调用add(x1,y1),add(x1,y2+1),add(x2+1,y1),add(x2+1,y2+1)

ggeh_f的博客 393

小米手机安装Burp证书失败原因与DER格式改造指南

CA证书是HTTPS抓包和移动安全测试的基础组件,其本质是遵循X.509标准的数字凭证,依赖ASN.1/DER编码格式与完整证书链实现可信验证。Android系统默认支持PEM和DER两种编码,但MIUI自14版本起强化安全策略,仅识别DER二进制格式,并强制校验Subject Alternative Name(SAN)、Basic Constraints及证书链完整性。这种企业级加固逻辑导致Burp Suite导出的PEM格式.cer文件在小米设备上‘安装成功但无效’。本文聚焦证书格式转换、SAN字段注入

weixin_33646989的博客 625

POJ2155 Matrix(二维树状数组)

POJ2155 Matrix(二维树状数组) 分析:首先该题为区间修改,点查询。 首先我们把问题降维,我们在一个一维数组中,每次修改区间[x1,y1]内的数翻转,然后查询位于a[x]的当前值。对于每个区间[x1,y1]翻转操作,我们只需要add(x1,1)和add(y1+1,1)操作就行,做完这步我们保证sum(x)的值就是a[x]被翻转的总次数。自己画个数轴验证下看看是不是?    当我们

code 726

k8s配置habor作为镜像地址之后,如果harbor中没有镜像,如何设置自动从阿里云官方镜像仓库下载

通过 Harbor 的远端仓库可以集中管理。如果你在上游设置了 image prefix 为 library,那么对外访问 harbor.your-domain.com/library/nginx:latest 就会被 Harbor 去上游拉取 registry.cn-hangzhou.aliyuncs.com/library/nginx:latest 并缓存。- 将集群中的镜像地址改为 Harbor 的域名,比如 harbor.your-domain.com/library/nginx:latest。

极客栈 422

人工智能数据治理——解读AI时代数据治理白皮书 2025【附全文阅读】

摘要:该白皮书面向企业数字化负责人及AI项目推进人员,探讨AI时代数据治理的战略升级。提出"好数据+好数据知识"双基石理念,强调数据需满足"三高"标准(高精度、一致性、时效性)并构建语义知识库。构建四层治理框架,包括数据采集处理、合规安全、知识库建设及质量改进,并介绍AI赋能治理的新范式,如智能ETL和治理Agent体系。同时分析"软件+AI+好数据"的应用模式,为企业实现智能数据治理提供实践指导。(149字)

cdfunlove的博客 632

POJ 2155 Matrix (二维树状数组,区间更新,点查找)

题目链接:POJ 2155 Matrix 楼教主出的题。 【题目大意】 给你你 N x N的矩形区域, 开始时每个点的值都为0 有两种操作 C x1 y1 x2 y2 将区域 x1 到 x2 y1 到 y2 围成的矩形区域的值翻转 (1变0 ,0变1); Q x1,y1,输出 (x1,y1)的值; 典型的区间更新,点查找的题目 相应的一维树状数组题目HDU 1556

Winjourn的专栏 1027

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 586

POJ 2155 Matrix(二维树状数组)

  题目链接:http://poj.org/problem?id=2155        题意是给一个n*n的全是0的矩阵,然后有T次询问,有两种操作,一是让(x1,y1)到(x2,y2)的值取反(0变1,1变0),第二个是询问(x,y)的值。        暴力大法好,但是会超时,所以这道题需要用树状数组来写,依照别的博客的例子来写,首先我们要先看一维数组的性质,对于l到r的值取反,我们的...

Charles_Zaqdt的博客 326

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ - 2155 Matrix 二维树状数组 (区间更新,单点查询)

POJ - 2155 Matrix 二维树状数组 没学过的可以看这篇博客:http://www.cnblogs.com/RabbitHu/p/BIT.html 矩阵中每个元素初始化为 0 ,每次更新,相应矩阵中的 0 变为 1 ,1 变为 0 。 更新时只需加 1 ,最后对 2 取模即为答案。  #include&lt;cstdio&gt; #include&lt;cstring&gt; ...

没有梦想何以远行 175

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

POJ 2155 Matrix 二维树状数组

题目来源:POJ 2155 Matrix 题意:开始矩阵都是0 2种操作 把某个子矩阵翻转 0变1 1变0 查询x y 是0还是1 思路:树状数组 记录翻转次数就行 奇数次是1 偶数次是0  这题是区间更新 点查询   向上求和 向下更新 而且是二维的 #include #include using namespace std; const int maxn = 1300; i

嗯。 1135

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

POJ2155 Matrix 树状数组

二维的树状数组,解题思想详见《浅谈信息学竞赛中的“0”和“1”》这篇论文,我上传了一份 http://download.youkuaiyun.com/detail/lenleaves/4548401 。很经典的题目,很经典的思想。 Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 128

1310

POJ_2155 Matrix 【二维树状数组】

一、题面 POJ2155 二、分析   楼教主出的题,是二维树状数组非常好的题,还结合了开关问题(开关变化的次数如果为偶数,状态不变,奇数状态相反)。   题意就是给了一个二维的坐标平面,每个点初始值都是0,然后给一个矩形的区域,对该区域的点的状态进行反转。然后在中间插有查询,查该点的状态。   其实,还是对反转次数的一个研究,这里为了能快速的查找一个点的反转次数,加上又是二维,且有区间...

weixin_30349597的博客 148

POJ2155 Matrix 题解(树状数组)

题目:POJ2155. 题目大意:对一个矩阵支持: 1.格式C&amp;amp;ThinSpace;x1&amp;amp;ThinSpace;y1&amp;amp;ThinSpace;x2&amp;amp;ThinSpace;y2C\,x1\,y1\,x2\,y2Cx1y1x2y2,表示将左上角为(x1,y1)(x1,y1)(x1,y1),右下角为(x2,y2)(x2,y2)(x2,y2)的矩阵全部取反,即000变111,111...

hzk_cpp的博客 298

POJ2155 Matrix 二维树状数组

题目链接:http://poj.org/problem?id=2155 题目大意:N * N 的矩阵,每个元素要么是0,要么是1,开始全0不断进行两种操作: (1)C x1 y1 x2 y2 表示要将左上角为(x1,y1),右下角为(x2,y2)的子矩阵里的全部元素都取反(0变1,1变0)(1 (2)Q x y 查询(x,y)处元素的值。 分析:HDU3584 Cube的简

AC_Gibson的专栏 510

poj 2155 Matrix (二维树状数组)

这是楼教主出的二维线段树或者是二维树状数组的题,题意很简单,就是有个n*n的矩阵,初始值都是0,然后给你左上角和右下角的坐标,把这个长方形的区间所有元素反转一下,然后问某个具体坐标的值。 这里我用了二维的线树状数组,一维树状数组可以解决区间更新和点查询的问题,这里只需要加一维就可以了,代码比较好写,不过开始犯了很多低级的错误。 //=======...

113

poj 2155 Matrix(二维树状数组)

楼教主出的二维树状数组。给出矩阵左上角和右下角坐标,矩阵里的元素 1变0 ,0 变1,然后给出询问,问某个点是多少。纠结好久了,一直没什么好思路,看discuss说四个角神马的,我搜了下,理解了,树状数组里记录该点的变幻次数,或者直接%2也行。查询的时候Getsum得到的是该点在所有区间的总变幻次数,最后%2就是结果。建图的时候死活想不通,杂四个点的坐标是那个 = =。。。刚才协会开会了,在路上想通了,我想的0,0坐标是类似坐标轴的那种,在左下角。。。而矩阵的0 0 应该是在左上角。。这样,什么都通了 =

小媛在努力~ 1万+

【poj2155】Matrix 树状数组

题目大意 给定一个N*N的矩阵a,a矩阵的初值设为0。T次操作,涉及区间翻转0和1以及单点查询。 2 &lt;= N &lt;= 1000, 1 &lt;= T &lt;= 50000 题解 我的做法好像跟其他人不太一样qwq 用二维树状数组维护差分,每次(x1,y1)+1,(x2+1,y1)-1,(x1,y2+1),因为右下部分多减了了一次,所以(x2+1,y2+1)+1,然后询问的时候只要加起...

Mininda 367

POJ2155 Matrix(树状数组)

给出一个矩阵,成块的修改一些值,原来是1变0,原来是0变1,询问某个点最后的值。 二维树状数组,再利用区间求和单点修改实现,最后只记录修改的次数,结果对2取余即为答案。 #include #include #include using namespace std; const int N=1005; int tree[N][N]; int n; int lowbit(int i) {

HOrchard 323

[POJ2155] Matrix - 二维树状数组

题目描述给一个N*N的矩阵A,其中元素是0或1。A[i][j]表示在第i行第j列的数。最初时,A[i][j]=0(1<=i,j<=N)。我们以以下方式来改变矩阵,给定一个矩形的左上角为(x1,y1)和右下角为(x2,y2),我们对这个矩形范围内的所有元素进行“非”操作(如果它是一个’0’,那么变化为’1’,否则它变为’0’)。请你编写一个程序完成以下两种操作: 1. C x1 y1 x2 y2 (

Bill_Yang_2016的博客 484

POJ 2155 Matrix【二维树状数组】POJ 2155【

Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row and j-th column. Initially we have A[i, j] = 0 (1 <= i, j <= N). We can change...

dianxuanzhi1019的博客 131
上一篇: 【树状数组】POJ 2352 Stars
下一篇: 【leetcode】53. Maximum Subarray
小do在努力
博客等级 码龄16年 58粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值