http://www.lydsy.com/JudgeOnline/problem.php?id=1452

题意:n×m的矩阵上每个点有个颜色,现在有q个操作:1 x y c 将点(x,y)的颜色改为c;2 x1 x2 y1 y2 c 询问矩阵x1y1-x2y2颜色为c的格子数目

#include <bits/stdc++.h>
using namespace std; const int N=301;
int n, m;
int S[101][N][N], col[N][N];
void upd1(int c[N], int x, int w) { for(; x<=m; x+=x&-x) c[x]+=w; }
void upd2(int c[N][N], int x, int y, int w) { for(; x<=n; x+=x&-x) upd1(c[x], y, w); }
int sum1(int c[N], int x) { int ret=0; for(; x; x-=x&-x) ret+=c[x]; return ret; }
int sum2(int c[N][N], int x, int y) { int ret=0; for(; x; x-=x&-x) ret+=sum1(c[x], y); return ret; }
void upd(int c[N][N], int x, int y, int s) {
upd2(c, x, y, s);
}
int sum(int c[N][N], int xa, int ya, int xb, int yb) {
int ret=0;
ret+=sum2(c, xb, yb); // cout << " ret: " << ret << endl;
ret-=sum2(c, xb, ya-1);
ret-=sum2(c, xa-1, yb);
ret+=sum2(c, xa-1, ya-1);
return ret;
} int main() {
scanf("%d %d", &n, &m);
for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) {
int x; scanf("%d", &x);
col[i][j]=x;
upd(S[x], i, j, 1);
}
int q;
scanf("%d", &q);
for(int cc=0; cc<q; ++cc) {
int ch;
scanf("%d", &ch);
if(ch==1) {
int x, y, cl;
scanf("%d %d %d", &x, &y, &cl);
upd(S[col[x][y]], x, y, -1);
col[x][y]=cl;
upd(S[col[x][y]], x, y, 1);
}
else {
int xa, xb, ya, yb, w;
scanf("%d%d%d%d%d", &xa, &xb, &ya, &yb, &w);
printf("%d\n", sum(S[w], xa, ya, xb, yb));
}
}
return 0;
}

  


二维bit......

【BZOJ】1452: [JSOI2009]Count的更多相关文章

  1. 【BZOJ】1443: [JSOI2009]游戏Game

    [算法]博弈论+二分图匹配(最大流) [题解]方格图黑白染色得到二分图, 二分图博弈:当起点不属于某个最大匹配时,后手必胜. 问题转化为那些点不属于某个最大匹配. 先找到一个最大匹配,非匹配点加入答案 ...

  2. 【BZOJ】1833 [ZJOI2010]count 数字计数

    [算法]数位DP [题解] 记忆化搜索 #include<cstdio> #include<algorithm> #include<cstring> #define ...

  3. 【BZOJ】1833: [ZJOI2010] count 数字计数(数位dp)

    题目 传送门:QWQ 分析 蒟蒻不会数位dp,又是现学的 用$ dp[i][j][k] $ 表示表示长度为i开头j的所有数字中k的个数 然后预处理出这个数组,再计算答案 代码 #include < ...

  4. BZOJ 1452: [JSOI2009]Count 二维树状数组

    1452: [JSOI2009]Count Description Input Output Sample Input Sample Output 1 2 HINT Source 题解:设定C[101 ...

  5. BZOJ 1452: [JSOI2009]Count(二维BIT)

    为每一个权值开一个二维树状数组. ------------------------------------------------------------------------- #include& ...

  6. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  7. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

  8. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...

  9. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

随机推荐

  1. 破解TP-Link路由-嗅探PPPoE拨号密码

    如果你平时都使用路由器直接上网,那么你还记得你的宽带(ADSL)帐户名和密码吗?忘记密码后又该如何找回呢?别急,本文带你一同找回遗忘的ADSL密码.1.安全性较差的路由器(例如腾达的某些路由器):这里 ...

  2. (转)SQL Server 的事务和锁(一)

    SQL Server 的事务和锁(一)   最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁: 1 2 3 4 5 6 7 8 9 1 ...

  3. Python多线程(2)——线程同步机制

    本文介绍Python中的线程同步对象,主要涉及 thread 和 threading 模块. threading 模块提供的线程同步原语包括:Lock.RLock.Condition.Event.Se ...

  4. HTTP状态码整理

    状态消息 1xx:信息 消息 描述 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求. 101 Switching Protocols 服 ...

  5. How to Optimize Battery Health?

    1. click on the battery icon from taskbar next to the date and time. 2. click "More power optio ...

  6. 最小的N个和(codevs 1245)

    1245 最小的N个和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 有两个长度为 N ...

  7. linux tricks 之 FIELD_SIZEOF.

    ------------------------------------------- 本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net -- ...

  8. TypeC一个微软开发的超简单.NET依赖注入/IoC容器

    控制反转(IoC,Inversion of Control)是由Martin Fowler总结出来的一种设计模式,用来减少代码间的耦合.一般而言,控制反转分为依赖注入(Dependency Injec ...

  9. linux下动态库so文件的一些认识

    转自:http://mypyg.iteye.com/blog/845915 个人创作,欢迎指错. 牵扯到ELF格式,gcc编译选项待补,简单实用的说明一下,对Linux下的so文件有个实际性的认识.  ...

  10. 简单的Java Web服务器

    import java.io.FileInputStream; import java.io.OutputStream; import java.net.ServerSocket; import ja ...