Count bzoj-1452 JSOI-2009

题目大意:请维护一个平面内的数据结构,支持:单点修改,查询矩形内给定权值出现次数。

注释:$1\le n,m\le 300$,$1\le Q \le 5000$,n和m分别是长和宽,Q是操作次数。

想法:显然,我们根据权值线段树,给这种数据结构起个名字... ...

二维权值树状数组。

我们对树状数组上的节点开一个桶,Tree[i][j][val]表示再以(i,j)右下端点、以(1,1)为左上端点的矩阵中权值为val的数的个数。

对于每个修改直接在对应权值上修改,查询向前查询即可。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int tree[310][310][110],a[310][310],n,m;
inline int lowbit(int x){return x&(-x);}
void fix(int x,int y,int val,int flag)
{
for(int i=x;i<=(n);i+=lowbit(i))
{
for(int j=y;j<=(m);j+=lowbit(j))
{
tree[i][j][val]+=flag;
}
}
}
int query(int x,int y,int val)
{
int ans=0;
for(int i=x;i;i-=lowbit(i))
{
for(int j=y;j;j-=lowbit(j))
{
ans+=tree[i][j][val];
}
}
return ans;
}
int main()
{
cin >> n >> m ;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
fix(i,j,a[i][j],1);
}
int q,opt,x1,x2,y1,y2,x,y,val; cin >> q ;
while(q--)
{
scanf("%d",&opt);
if(opt==1)
{
scanf("%d%d%d",&x,&y,&val);
fix(x,y,a[x][y],-1);
a[x][y]=val;
fix(x,y,a[x][y],1);
}
else
{
scanf("%d%d%d%d%d",&x1,&x2,&y1,&y2,&val);
printf("%d\n",query(x2,y2,val)+query(x1-1,y1-1,val)-query(x1-1,y2,val)-query(x2,y1-1,val));
}
}
return 0;
}

小结:树状数组是真tm好写... ...

[bzoj1452][JSOI2009]Count_树状数组的更多相关文章

  1. [bzoj1452][JSOI2009]Count(树状数组)

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2057  Solved: 1216[Submit][Stat ...

  2. 【BZOJ-1452】Count 树状数组 套 树状数组

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1769  Solved: 1059[Submit][Stat ...

  3. BZOJ1452 count (树状数组)

    一道比较水的二维树状数组,开100个即可,只有100种颜色还是比较EZ的. Program BZOJ1452; ; maxc=; ..maxn,..maxn,..maxc] of longint; f ...

  4. 【BZOJ1452】[JSOI2009]Count(树状数组)

    [BZOJ1452][JSOI2009]Count(树状数组) 题面 BZOJ 洛谷 题解 数据范围这么小?不是对于每个颜色开一个什么东西记一下就好了吗. 然而我不会二维树状数组? 不存在的,凭借多年 ...

  5. BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2693  Solved: 1574 [Submit][St ...

  6. BZOJ1452 [JSOI2009]Count [2017年4月计划 树状数组02]

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2419  Solved: 1403[Submit][Stat ...

  7. bzoj1452 [JSOI2009]Count ——二维树状数组

    中文题面,给你一个矩阵,每一个格子有数字,有两种操作. 1. 把i行j列的值更改 2. 询问两个角坐标分别为(x1,y1) (x2,y2)的矩形内有几个值为z的点. 这一题的特点就是给出的z的数据范围 ...

  8. 【bzoj1452】[JSOI2009]Count 二维树状数组

    题目描述 输入 输出 样例输入 样例输出 1 2 题解 二维树状数组 一开始没看到 1≤c≤100 ,想到了主X树和X块,结果发现c的范围那么小... 二维树状数组水题,和一维的一样,向上修改,向下查 ...

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

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

随机推荐

  1. Linux 中的键盘映射【转】

    本文转载自:http://hessian.cn/p/144.html [转]Linux 中的键盘映射 原文地址:http://www.linuxidc.com/Linux/2011-04/35197. ...

  2. fixed和absolute

    fixed是相对于浏览器窗口固定 absolute是相对于整体网页固定.(整体网页包括所有的内容,包含右侧滑动条滑动所能看到的内容)

  3. spring:使用<prop>标签为Java持久属性集注入值

    spring:使用<prop>标签为Java持久属性集注入值 使用 spring 提供的<prop>为Java持久属性集注入值,也就是向 java.util.Propertie ...

  4. bzoj 4709 [ Jsoi2011 ] 柠檬 —— 斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 课上讲的题,还是参考了博客...:https://www.cnblogs.com/GX ...

  5. 移动App服务端架构设计

      我从事手机app服务端开发现在已经是3个年头,自己也整理出了一套相对好用的服务架构,写出来,跟大家一起分享.如有不足,还请多指教. 一:基础流程图. 其实有一点还需要加上,就是对json的压缩和加 ...

  6. Python 43 视图 、sql注入问题 、事务 、存储过程

    一:视图 1 视图是什么? 本质是一张虚拟的表,他的数据来自select语句 创建视图 create view test_view select *from t1; 2 有什么用? 原表安全 案例: ...

  7. layui日期输入框

    <div class="layui-form-item">                <label class="layui-form-label& ...

  8. 前端常见面试题总结part2

    今天总结了几道,感觉非常有意思的题,有感兴趣的可以看下,有疑问请留言~ (答案在最后) 考察自执行函数的this指向 审题要细心 var n = 2, obj = { n:2, fn:(functio ...

  9. 工具分享3:VMware 10虚拟机、MS-DOS 7.1、安装教程(MS-DOS环境安装)

    VMware 10工具下载地址: 网页下载链接:http://www.xp510.com/xiazai/ossoft/desktools/22610.html MS-DOS .10镜像下载地址: 网页 ...

  10. C#方法的练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo ...