【树状数组套树状数组】BZOJ1452(JSOI2009)[Count]题解
来源:互联网 发布:seo资源 编辑:程序博客网 时间:2024/05/22 15:45
题目概述
有
解题报告
颜色数这么少,直接搞事情。线段树套线段树当然可以水过去啦,不过这种单点修改区间求和的问题我们当然会想到更简便的树状数组,所以这里介绍一下二维树状数组:
记录
这道题开
示例程序
#include<cstdio>using namespace std;const int maxn=300,maxm=300,maxc=100;int n,m,te,a[maxn+5][maxm+5],tr[maxc+5][maxn+5][maxm+5];#define Eoln(x) ((x)==10||(x)==13||(x)==EOF)inline char readc(){ static char buf[100000],*l=buf,*r=buf; if (l==r) r=(l=buf)+fread(buf,1,100000,stdin); if (l==r) return EOF; else return *l++;}inline int readi(int &x){ int tot=0,f=1;char ch=readc(),lst='+'; while ('9'<ch||ch<'0') {if (ch==EOF) return EOF;lst=ch;ch=readc();} if (lst=='-') f=-f; while ('0'<=ch&&ch<='9') tot=tot*10+ch-48,ch=readc(); return x=tot*f,Eoln(ch);}inline void writei(int x){ static int buf[10],len;len=0;do buf[len++]=x%10,x/=10; while (x); for (int i=len-1;i>=0;i--) putchar(buf[i]+48);}inline void Update(int c,int x,int y,int tem){ for (int i=x;i<=n;i+=i&-i) for (int j=y;j<=m;j+=j&-j) tr[c][i][j]+=tem;}inline int Ask(int c,int x,int y){ int sum=0; for (int i=x;i;i-=i&-i) for (int j=y;j;j-=j&-j) sum+=tr[c][i][j]; return sum;}int main(){ freopen("program.in","r",stdin); freopen("program.out","w",stdout); readi(n);readi(m); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) readi(a[i][j]),Update(a[i][j],i,j,1); for (readi(te);te;te--) { int td,A,B,C,D,c;readi(td);readi(A);readi(B); if (td==1) readi(c),Update(a[A][B],A,B,-1),Update(a[A][B]=c,A,B,1); else readi(C),readi(D),readi(c),writei(Ask(c,B,D)-Ask(c,B,C-1)-Ask(c,A-1,D)+Ask(c,A-1,C-1)),putchar('\n'); } return 0;}
阅读全文
0 0
- 【树状数组套树状数组】BZOJ1452(JSOI2009)[Count]题解
- [BZOJ1452]JSOI2009 Count|树状数组
- 【BZOJ1452】【JSOI2009】Count 二维树状数组
- BZOJ1452 [JSOI2009]Count(二维树状数组)
- [BZOJ1452][JSOI2009]Count(二维树状数组)
- BZOJ1452: [JSOI2009]Count 二维树状数组
- [BZOJ1452][JSOI2009]Count(二维树状数组)
- bzoj1452: [JSOI2009]Count(二维树状数组)
- 【二维树状数组】BZOJ1452 [JSOI2009]Count
- bzoj1452[JSOI2009]Count 二维树状数组/树套树
- BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】
- [bzoj1452][树状数组]Count
- 【BZOJ】【P1452】【JSOI2009】【Count】【二维树状数组】
- BZOJ 1452 [JSOI2009]Count 二维树状数组
- BZOJ_P1452 [JSOI2009]Count(二维树状数组)
- |BZOJ 1452|树状数组|[JSOI2009]Count
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- 1452: [JSOI2009]Count 二维树状数组
- 科研投入全球第一,但美国人却担心对经济没有效果
- 传美团敲定30亿美元融资,估值将达280亿美元
- 一个关于POLL的BUG,百思不得其解
- 撤销工作区的内容&撤销暂存区的内容
- 现身多伦多的马云,和加拿大总理谈了些什么?
- 【树状数组套树状数组】BZOJ1452(JSOI2009)[Count]题解
- 字符串转时间格式-严格验证时间格式
- CSS的三种布局模型,流动模型(Flow),浮动模型(Float),层模型(Layer)
- Android 端天气预报APP的实现(一)天气显示界面之上下滑动
- MySQL NULL 值处理
- 微信启动图片6年来的首次更换;网信办对微博、贴吧作出处罚;谷歌Play成为全球最大手机应用平台丨价值早报
- Your task is to Calculate a + b.
- 第38、39周收录252起融资,国内大鱼吃小鱼,国外印尼共享经济资本热度高 | 潜在周报
- 带给你仅次于床上的睡眠体验,有了它眼罩都省了丨钛空舱