模板- 数据结构 - 二维树状数组 二维树状数组涉及到两种基本操作,修改矩阵中的一个点,查询子矩阵的和。 首先是修改点: voidupdate(intx,inty,intz) {for(inti=x;i<=n;i+=lowbit(i))for(intj=y;j<=m;j+=lowbit(j)) c[i][j]+=z; } 然后是查询前缀和: intget_sum(intx,inty) {intret=0;fo...
树状数组 https://oi-wiki.org/ds/fenwick/ 题目描述 这是一道模板题。 给出一个 n×m 的零矩阵 A,你需要完成如下操作: 1 x y k:表示元素 A_{x,y} 自增 k; 2 a b c d:表示询问左上角为 (a,b),右下角为 (c,d) 的子矩阵内所有数的和。 输入格式 输入的第一行有两个正整数 n, m; ...
二维树状数组模板(自用) demo: 1#include<iostream>2#include<algorithm>3#include<cmath>4#include<cstring>5#include<queue>6#include<cstdio>7#defineLL long long8usingnamespacestd;9constintmaxa=1024*2+10;//~~pow(2,11)+1010LL n,m;11LL C1[maxa][maxa],C2[maxa][maxa],C3[maxa][maxa],C4...
POJ Monthly,Lou Tiancheng 二维树状数组的经典例题 二维数组 题意:一个n*n的矩阵,矩阵里的每一个数要么是0,要么是1。 有两种操作,C操作是将区间[(x1,y1),(x2,y2)]中所有的数反转(0变1,1变0),Q操作是查询f[x][y]的数值。 分析: 根据这个题目中介绍的这个矩阵中的数的特点不是1就是 0,这样我们...
很明显的 二维树状数组 注意 灯亮过了就不能再亮了 而且灯关了就不能再关了 所以可以用一个flag数组标记是否可以进行关灯开灯操作 注意下标要从1开始 题目从0开始 所以要加1 #include<stdio.h>#include<string.h>constintN=1003;intc[N+5][N+5],flag[N+5][N+5],n,m;intmmax(inta,intb){return...
二维树状数组模板+POJ2155(矩阵) 技术标签: 二维树状数组模板: void add(int x,int y,int val) { while(y<=n) { int tmp=x; while(tmp<=n) { c[tmp][y]+=val; tmp+=tmp&-tmp; } y+=y&-y; } } int getsum(int x,int y) { int sum=0; while(y>0) { int tmp=x; while(tmp>...
树状数组 https://oi-wiki.org/ds/fenwick/ 题目描述 这是一道模板题。 给出一个 n×m 的零矩阵 A,你需要完成如下操作: 1 x y k:表示元素 A_{x,y} 自增 k; 2 a b c d:表示询问左上角为 (a,b),右下角为 (c,d) 的子矩阵内所有数的和。 输入格式 输入的第一行有两个正整数 n, m;接...
二维树状数组模板 完全版 1 #include <cstdio> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 int lowbit(int x) 7 { 8 return x&(-x); 9 } 10 struct tree_arr 11 { 12 int c[1005]; 13 tree_arr() 14 { 15 clear(); 16 } 17 void...
二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: Lx1y1x2y2dLx1y1x2y2d:把(x1,y1)(x1,y1),(x2,y2)(x2,y2)这个矩形内所有元素加dd。 kx1y1x2y2kx1y1x2y2:查询(x1,y1)(x1,y1),(x2,y2)(x2,y2)这个矩形内所有元素的和。
树状数组 https://oi-wiki.org/ds/fenwick/ 自己挖坑 XXX XXX 题目描述 这是一道模板题。 给定一个大小为 N×M 的零矩阵,直到输入文件结束,你需要进行若干个操作,操作有两类: 1 a b c d x,表示将左上角为 (a,b),右下角为 (c,d) 的子矩阵全部加上 x; 2 a b c d,表示询问左上角为 (a,...