1452: [JSOI2009]Count - BZOJ
Description

Input

Output

Sample Input

Sample Output
1
2
HINT

一开始还想什么离线做,其实不用,空间足够,我们直接开100个二维树状数组,然后就行了
但是如果c范围很大就离线做好一些
type
tree=array[..,..]of longint;
var
s:array[..]of tree;
a:array[..,..]of longint;
n,m,q:longint; procedure add(var c:tree;x,y,w:longint);
var
i:longint;
begin
while x<=n do
begin
i:=y;
while i<=m do
begin
inc(c[x,i],w);
i:=i+(i and (-i));
end;
x:=x+(x and (-x));
end;
end; function sum(var c:tree;x,y:longint):longint;
var
i:longint;
begin
sum:=;
while x> do
begin
i:=y;
while i> do
begin
inc(sum,c[x,i]);
i:=i-(i and (-i));
end;
x:=x-(x and (-x));
end;
end; procedure main;
var
i,j,x1,y1,x2,y2,c:longint;
begin
read(n,m);
for i:= to n do
for j:= to m do
begin
read(a[i,j]);
add(s[a[i,j]],i,j,);
end;
read(q);
for i:= to q do
begin
read(j);
if j= then
begin
read(x1,y1,c);
add(s[a[x1,y1]],x1,y1,-);
a[x1,y1]:=c;
add(s[c],x1,y1,);
end
else
begin
read(x1,x2,y1,y2,c);
writeln(sum(s[c],x2,y2)+sum(s[c],x1-,y1-)-sum(s[c],x1-,y2)-sum(s[c],x2,y1-));
end;
end;
end; begin
main;
end.
1452: [JSOI2009]Count - BZOJ的更多相关文章
- BZOJ 1452: [JSOI2009]Count 二维树状数组
1452: [JSOI2009]Count Description Input Output Sample Input Sample Output 1 2 HINT Source 题解:设定C[101 ...
- BZOJ 1452: [JSOI2009]Count(二维BIT)
为每一个权值开一个二维树状数组. ------------------------------------------------------------------------- #include& ...
- 二维树状数组 BZOJ 1452 [JSOI2009]Count
题目链接 裸二维树状数组 #include <bits/stdc++.h> const int N = 305; struct BIT_2D { int c[105][N][N], n, ...
- 【BZOJ】1452: [JSOI2009]Count
http://www.lydsy.com/JudgeOnline/problem.php?id=1452 题意:n×m的矩阵上每个点有个颜色,现在有q个操作:1 x y c 将点(x,y)的颜色改为c ...
- bzoj 1452: [JSOI2009]Count (二维树状数组)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1452 思路: 对每个颜色开一个二维树状数组维护就好了 实现代码: #include<b ...
- BZOJ 1452 [JSOI2009] Count
这道题好像有点简单的样子... absi找题目好厉害啊...确实是一道比较裸的2dBIT啊. 水掉吧. 附:2dBIT怎么做: 2dBIT就是BIT套BIT啦. 所以修改loop(x+=lowbit( ...
- bzoj 1452: [JSOI2009]Count ——二维树状数组
escription Input Output Sample Input Sample Output 1 2 HINT ———————————————————————————————————————— ...
- 1452: [JSOI2009]Count
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 3135 Solved: 1828[Submit][Status][Discuss] Descripti ...
- Day6 - C - Count HYSBZ - 1452 /1452: [JSOI2009]Count
Description 一个N*M的方格,初始时每个格子有一个整数权值,接下来每次有2个操作: 改变一个格子的权值 求一个子矩阵中某个特定权值出现的个数 Input 每一行有两个数字N,M 接下来 ...
随机推荐
- 二维码zxing源码分析(五)精简代码
由于工作的需要,我并不是需要二维码扫描的所有的功能,我只是需要扫一扫,并显示出来图片和url就行,于是我们就要精简代码了,源码已经分析完了,精简起来就方便多了,源码分析请看 二维码zxing源码分析( ...
- Android DiffUtil
Android 的recyclerview-v7:24.2.0 发布后多了个DiffUtil工具类,这个工具类能够大大解放了Android开发者的一个苦恼:RecyclerView局部刷新和重新刷新时 ...
- MySQL之不能保存表格问题
有时候我们制作表格不能保存时出现这样的提示: 我们打开工具: 把“阻止保存要求重新创建表的更改”选项的勾给去了:
- 在ASP.NET中发送电子邮件的实例教程
首先.导入命名空间: 代码如下 复制代码 using System.Net.Mail; 定义发送电子邮件的方法[网上很多不同的,可以对比着看一下,WinForm的也适用]: 代码如下 复制代码 /// ...
- php折线图 布局图
例子1: 1 <?php require_once("../conf.php"); ?> <!DOCTYPE HTML> <html> < ...
- 将string转换成char*
string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1.data 如: string str="abc"; ch ...
- HDU 5093 Battle ships(二分图最大匹配)
题意:一个m行n列的图由#.*.o三种符号组成,分别代表冰山.海域.浮冰,问最多可放的炮舰数(要求满足以下条件) 1.炮舰只可放在海域处 2.两个炮舰不能放在同一行或同一列(除非中间隔着一个或多个冰山 ...
- lower_bound和upper_bound
lower_bound:返回大于或等于val的第一个元素位置 upper_bound:返回大于val的第一个元素位置 两个函数用的都是二分查找
- Vim一些实用的用法
打开多个文件: 1.vim还没有启动的时候:在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:open file可以再打开一个文件,并 ...
- (原创)LINUX_UNIX设计思想-读书笔记
第一章 一.Unit哲学 1.小即是美 2.让每一个程序只做好一件事情 3.尽快建立原型 4.舍高效率而取可移植性 5.使用纯文本文件来存储数据 6.充分利用软件的杠杆效应 7.使用shell脚本来提 ...