BZOJ 1452 Count】的更多相关文章

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1452 题意:给出一个数字矩阵(矩阵中任何时候的数字均为[1,100]),两种操作:(1)修改某个位置的数字:(2)求某个子矩阵中某个数字的个数. 思路:二维树状数组的操作看起来跟一维的差不多,只是循环改为两重而已.主要操作有:(1)增加某个位置的值:(2)询问[1,1,x,y]子矩阵的和.利用(2)操作以及区间的减法操作我们能求出任意一个子矩阵的数字和.这道题用a[i][x][y]来记…
长知识啦..二维BIT. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ][][],map[][]; int a,b,c,d,e,f; int lowbit(int x) { return x&(-x); } void update(int x,int y,int c,int val) { for (int…
大水题. 建立100个二维树状数组,总复杂度就是O(qlognlogm). # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include <stack> # include <map> # include <set&…
对每种颜色开一个二维树状数组 #include<cstdio> #include<algorithm> using namespace std; ; ][maxn][maxn],c[maxn][maxn],Q,n,m,k,x,y,xx,yy,col; inline void read(int &k){ k=; ; char c=getchar(); ),c=getchar(); +c-',c=getchar(); k*=f; } inline void add(int co…
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 <…
为每一个权值开一个二维树状数组. ------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream>   #define rep(i, n) for(int i = 0; i < n; ++i) #define Rep(i ,n…
题目链接 裸二维树状数组 #include <bits/stdc++.h> const int N = 305; struct BIT_2D { int c[105][N][N], n, m; void init(int n, int m) { memset (c, 0, sizeof (c)); this->n = n; this->m = m; } void updata(int k, int x, int y, int z) { for (int i=x; i<=n;…
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1452 思路: 对每个颜色开一个二维树状数组维护就好了 实现代码: #include<bits/stdc++.h> using namespace std; ][][]; ][],n,m,q; int lowbit(int x){ return x&-x; } void add(int x,int y,int z,int rt){ for(int i = x;i <= n;i…
[JSOI2009]Count 描述 输入 输出 1 2 分析: 裸二维bit,对每个颜色建一颗bit. program count; var bit:..,..,..]of longint; a:..,..]of longint; n,i,m,j,x,y,c,x1,y1,x2,y2,q,g,ans:longint; procedure add(x,y,c,v:longint); var i:longint; begin i:=y; while x<=n do begin while y<=m…
这道题好像有点简单的样子... absi找题目好厉害啊...确实是一道比较裸的2dBIT啊. 水掉吧. 附:2dBIT怎么做: 2dBIT就是BIT套BIT啦. 所以修改loop(x+=lowbit(x)){loop(y+=lowbit(y)){}} 查询loop(x-=lowbit(x)){loop(y-=lowbit(y)){}} 然后查询区间当然是用容斥... 假设查询(x1+1,y1+1)(x2,y2) 那么答案=Q(x1,y1)+Q(x2,y2)-Q(x1,y2)-Q(x2,y1) Q…