题意 题目链接 Sol 很傻x的题.. c才100, n, m才300,直接开100个二维树状数组就做完了.. #include<bits/stdc++.h> using namespace std; const int MAXN = 301; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();…
---题面--- 题解: 二维树状数组的板子题,,,学了这么久第一次写二维树状数组,惭愧啊. 怎么写就不说了,看代码吧. 跟普通的是一样的写法 #include<bits/stdc++.h> using namespace std; #define R register int #define AC 302 #define lowbit(x) (x & (-x)) int n, m, k; int a[AC][AC], c[AC][AC][AC]; inline int read()…
题目:https://www.luogu.org/problemnew/show/P1527 整体二分,先把所有询问都存下来: 然后二分一个值,小于它的加到二维树状数组的前缀和里,判断一遍所有询问,就分出了这些询问的答案是否大于这个值: 然后分组递归下去求解即可: 注意加二维树状数组的那个nw是全局变量,在不同的层中不停调整: 二分的范围最好是mn-1到mx+1,不然有些询问的ans会没有赋上值. 代码如下: #include<iostream> #include<cstdio>…
题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入输出格式 输入格式: 第一行有两个数N,M. 接下来N行,每行M个数,第i+1行第j个数表示格子(i,j)的初始权值. 接下来输入一个整数Q. 之后Q行,每行描述一个操作. 操作1:“1 x y c”(不含双引号).表示将格子(x,y)的权值改成c(1<=x<=n,1<=y<=m,1<=c<=100). 操作2:“2 x1…
中文题面,给你一个矩阵,每一个格子有数字,有两种操作. 1. 把i行j列的值更改 2. 询问两个角坐标分别为(x1,y1) (x2,y2)的矩形内有几个值为z的点. 这一题的特点就是给出的z的数据范围很小,只有1~100,所以我们可以开100个300X300的二维树状数组来解决问题. #include<bits/stdc++.h> using namespace std; ][][]; ][]; int n,m,k; int lowbit(int x) { return x&-x; }…
escription Input Output Sample Input Sample Output 1 2 HINT —————————————————————————————————————————— 这道题是裸的二维树状数组.....直接每个颜色弄一个二维的树状数组然后容斥(也不知道算不算)就可以辣 #include<cstdio> #include<cstring> #include<algorithm> int read(){ ,f=,c=getchar();…
题目描述 输入 输出 样例输入 样例输出 1 2 题解 二维树状数组 一开始没看到 1≤c≤100 ,想到了主X树和X块,结果发现c的范围那么小... 二维树状数组水题,和一维的一样,向上修改,向下查询,把一个范围变为4个范围处理. #include <cstdio> int a[310][310] , f[110][310][310] , n , m; void update(int p , int x , int y , int a) { int i , j; for(i = x ; i…
1452: [JSOI2009]Count Description Input Output Sample Input Sample Output 1 2 HINT Source 题解:设定C[101][N][N] 树状数组上价值为val的lowbit数组 //meek ///#include<bits/stdc++.h> #include <iostream> #include <cstdio> #include <cmath> #include <…
P4054 [JSOI2009]计数问题 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入输出格式 输入格式: 第一行有两个数N,M. 接下来N行,每行M个数,第i+1行第j个数表示格子(i,j)的初始权值. 接下来输入一个整数Q. 之后Q行,每行描述一个操作. 操作1:"1 x y c"(不含双引号).表示将格子(x,y)的权值改成c(1<=x<=n,1<=y<…
时间限制: 1 Sec 内存限制: 128 MB 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入 第一行有两个数n,m. 接下来n行,每行m个数,第i+1行第j个数表示格子(i,j)的初始权值. 接下来输入一个整数q. 接下来q行,每行描述一个操作. 操作1:“1 x y c”(不含双引号).表示将格子(x,y)的权值改成c(1<=x<=n,1<=y<=m,1<=c<=…