POJ2155 - Matrix (二维树状数组)

【ubuntu24.04】auto remove后,重启,kernel panic ,please reboot your computer vfs unable to mount root fs Ubuntu 24.04系统在运行auto remove后出现内核恐慌(kernel panic)无法启动,显示"VFS: unable to mount root fs"错误。该问题是由于当前内核被清除导致系统无法挂载根分区。解决步骤包括:1)尝试用GRUB菜单中的旧内核启动;2)在GRUB中临时编辑启动参数;3)使用Ubuntu启动盘进行chroot修复;4)使用Boot-Repair工具一键修复。成功启动后,需要重新安装linux-generic等元包,重建initramfs并更新 阅读详情

题目链接:

http://poj.org/problem?id=2155


题目大意:

给定一个矩阵,初始化为0,现在可以进行两种操作,一种是查询某个点的值是 0 还是 1。另一种是让这个矩阵的一个子矩阵内的值取反。


解题过程:

省赛选拔赛的题,太难了直接没看………
后来补起来,有模板还是挺容易的。


题目分析:

  • 首先这题虽然看起来像是一个区间修改,单点查询的题,但是可以转化成单点修改,查询区间和。

    • 首先考虑一维的情况,我要一段区间取反,假设是 [l, r]。那么我只需要book[l]+1,book[r+1]+1,假设查询 k 的时候,只需要查询前 k 的和 mod 2 的结果即可。
    • 然后这种方法可以推广到二维,不过这里要用一下容斥原理。假设修改的子矩阵左上角和右下角分别为 x1 y1 x2 y2,首先book[x1][y1]+1, book[x2][y2]+1,不过这时要 book[x1][y2+1]+1, book[x2+1][y1]+1。

    • 这里写图片描述

    • 这里红色的就是上面需要标记的点,标记后表示以这个点为左下角的子矩阵内的点全部取反一次。这里绿色代表取反一次,紫色是取反了两次,黄色是取反了四次。最后实际进行取反操作的就是要求取反的子矩阵内的点。

  • 注意这里的前缀和用二位树状数组维护,进行单点更新,单点查询。

AC代码:

#include<cstdio>
#include<cstring>
using namespace std;

const int MAX = 1123;
int data[MAX][MAX], n;

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

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

int Sum(int x, int y) {
    int ans = 0;
    for (int i = x; i > 0; i -= lowbit(i)) {
        for (int j = y; j > 0; j -= lowbit(j)) {
            ans += data[i][j];
        }
    }
    return ans;
}

int main() {
    char str[10];
    int T;
    scanf("%d", &T);
    while (T--) {
        int k;
        scanf("%d %d", &n, &k);
        memset(data, 0, sizeof(data));
        while (k--) {
            scanf(" %s", str);
            if (str[0] == 'C') {
                int x1, x2, y1, y2;
                scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
                Add(x1, y1, 1);
                Add(x2+1, y1, 1);
                Add(x1, y2+1, 1);
                Add(x2+1, y2+1, 1);
            }
            else {
                int x, y;
                scanf("%d %d", &x, &y);
                printf("%d\n", Sum(x, y)%2);
            }
        }
        if (T)
            printf("\n");
    }
}
零基础入门simulink仿真--通信领域的调制解调技术:基于Simulink的PM信号调制与解调仿真建模示例 PM的基本原理是将基带信号(如语音或音乐信号)加载到高频载波信号的相位上。通过改变载波的瞬时相位,可以实现信息的传输。PM的优点包括抗噪声能力强、频谱利用率较高等,但其解调过程相对复杂。通过Simulink,我们可以通过模块化的建模方式实现PM信号的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的PM信号调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解PM信号调制与解调的基本原理及其应用。所需工具和环境:列出进行PM仿真所需的工具和环境。 阅读详情

相关推荐

七步设计高频变压器

七步设计高频变压器

m0_71394959的博客 5401

树状数组(详细分析+应用),看不懂打死我!

树状数组介绍 在学习一个算法之前一定要清楚它能干嘛,能解决什么样的问题,对你解题是否有帮助,然后才去学习它! 那么接下来看如下几个问题 什么是树状数组 顾名思义就是一个结构为树形结构的数组,于二叉树的结构类似但又不同,它是在二叉树的结构上删除了一些中间节点,来看两幅图就明白了. 1.这是二叉树的结构 2.这是树状数组的结构 不难发现,树状数组相比于二叉树删除了一些节点,但是为什么要删除呢?这就和树状数组的一些性质(lowbit)有关了,不懂没关系,继续往下看. 树状数组可以解决什么问题呢? 可以解决大部

TheWayForDream 8万+

Android GNSS 可视卫星星空图/卫星天顶图 原理及画法介绍

目录1 概念介绍2 绘制步骤2.1 获取卫星信息2.2 绘制底图 效果图: 1 概念介绍 首先介绍一下方位角和高度角的概念: 方位角:是从某点的指北(地理北极)方向线起,依顺时针方向到目标方向线之间的水平夹角。 高度角:从一点至观测目标的方向线与水平面间的夹角。 卫星天顶图 即是根据每一颗卫星的方位角和高度角将其画在以观测位置为中心的天顶图上。 天顶图其底图为由外向内的三个圆和四条直线。三个圆由外向内依次代表高度角0°、30°、60°,中心点代表90°;四条直线分别表示正北-正南、东北-西南、正东

x1471898145的博客 1万+

树状数组详解

文章目录前言一、树状数组概括二、树状数组的应用1.单点修改+区间查询总结 前言 树状数组或二叉索引树(Binary Indexed Tree),又以其发明者命名为 Fenwick 树。其初衷是解决数据压缩里的累积频率的计算问题,现多用于高效计算数列的前缀和、区间和。它可以以 O(logn) 的时间得到任意前缀和。并同时支持在 O(logn) 时间内支持动态单点值的修改。空间复杂度 O(n)。 一、树状数组概括 树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&

萧何山的博客 2万+

不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面

本文详细介绍了如何使用SpannableStringBuilder在Android平台上构建专业级AI对话界面,涵盖流式文本处理、富文本解析、交互优化等核心技术。通过实战代码示例,帮助开发者实现类似DeepSeek的AI产品交互效果,提升用户体验和应用专业度。

weixin_28358083的博客 198

银河麒麟V10系统下,手把手解决Ollama安装报错‘GLIBCXX_3.4.25 not found’

本文详细介绍了在银河麒麟V10系统下解决Ollama安装报错‘GLIBCXX_3.4.25 not found’的实战指南。通过隔离编译新版libstdc++、环境变量引导和服务化封装等安全方案,确保在不破坏系统稳定性的前提下顺利运行Ollama,适用于国产操作系统与AI工具的兼容性需求。

weixin_42556197的博客 484

树状数组(超详细)

树状数组千字精华讲解

Jiguoyuanyic的博客 4225

CentOS7下快速修复libssl.so.1.1缺失问题(附腾讯云镜像加速下载)

本文详细介绍了在CentOS7系统中快速修复libssl.so.1.1缺失问题的工程化实践方案。通过编译安装OpenSSL 1.1.x版本、配置动态链接器及创建符号链接等步骤,有效解决共享对象文件缺失问题,并提供了腾讯云镜像加速下载的优化方案,帮助开发者高效部署现代应用。

weixin_33711647的博客 367

【高级数据结构】树状数组

树状数组(BinaryIndexedTree,BIT)(Binary Indexed Tree,BIT)(BinaryIndexedTree,BIT)是利用数的二进制特征进行检索的一种树状的结构。如何利用二分的思想高效地求前缀和? 如图4.74.74.7所示, 以AAA =[a1,=[a_1,=[a1​,a2a_2a2​ ,a3a_3a3​…a8]a_8]a8​]为例,将二叉树的结构画成树状。这幅图是树状数组的核心,理解了它,就能明白树状数组的一切操作。图4.74.74.7圆圈中标记有数字的节点,存储的是称

Antonio915的博客 6175

Calibre DRC

calibre DRC的运行方法,包括merge gds和加用dummy rule加dummy的方法

m0_61544122的博客 1万+

基于深度学习YOLOv8的PCB板缺陷检测系统

基于YOLOv8的PCB板缺陷检测系统,可以有效提高PCB生产过程中的检测效率。未来,我们可以进一步优化模型,结合更多的数据增强策略和先进的网络结构,以适应更复杂的生产环境。为了进行训练,理想的数据集应包含多种不同缺陷类型和不同背景的PCB图像。YOLOv8需要的数据格式为每个图像一个标签文件,每个标签文件包含缺陷的类别及其边界框坐标。运行该界面时,用户可以通过点击按钮选择图像,随后系统将自动检测图像中的PCB缺陷并显示结果。训练完成后,可以使用训练好的模型进行推理,检测新的PCB图像中的缺陷。

YOLO 1070

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

【图像去噪】论文精读:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image

论文题目:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image —— FM2S:单噪声图像自监督荧光显微镜去噪arXiv 2024!显微图像去噪!通过可视化详细的细胞结构和生物过程,荧光显微镜具有显着先进的生物学研究。然而,由于难以精确建模固有噪声和获取干净图像进行训练,这种图像去噪任务往往面临挑战,这限制了大多数现有方法。在本文中,我们提出了一种有效的。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 408

二维树状数组-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]的值

有一分热,发一分光。 5182

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

二维树状数组_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

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

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

POJ2155 Matrix(二维树状数组)

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

code 726

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

poj 2155 Matrix(二维树状数组)

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

小媛在努力~ 1万+

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

POJ_2155 Matrix 【二维树状数组】

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

weixin_30349597的博客 148

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

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

二维树状数组 —— POJ 2155 Matrix

大田二十 519

[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
上一篇: 最长上升子序列(DP+模板)
下一篇: POJ3494 - Largest Submatrix of All 1’s (单调栈)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值