这周好好码树状数组和线段树!!之前没写过二维树状数组,凭借一维的思路居然写了个比较像模像样的东西出来,原来我没那么脑残。唯一要注意的就是getsum四个矩形加减的边界条件,这里看了别人标程才意识到错误QAQ!

program vijos_p1512;
var f,t:array[..,..] of longint;
n,m,i,j,x,y,k,x1,x2,y1,y2:integer;
ans:longint;
function lowbit(x:longint):longint;
begin
lowbit:=x and (-x);
end; procedure add(x,y,delta:longint);
var ty:longint;
begin
ty:=y;
while (x<=n) do
begin
while (y<=n) do
begin
inc(f[x,y],delta);
y:=y+lowbit(y);
end;
x:=x+lowbit(x);
y:=ty;
end;
end; function getsum(x,y:longint):longint;
var ty,p:longint;
begin
ty:=y;p:=;
while (x>) do
begin
while (y>) do
begin
inc(p,f[x,y]);
y:=y-lowbit(y);
end;
x:=x-lowbit(x);
y:=ty;
end;
getsum:=p;
end; begin
readln(n);
read(m);
while m<> do
begin
if m= then
begin
readln(x,y,k);
add(x+,y+,k);
end;
if m= then
begin
readln(x1,y1,x2,y2);
ans:=getsum(x2+,y2+)-getsum(x1,y2+)-getsum(x2+,y1)+getsum(x1,y1);
writeln(ans);
end;
read(m);
end;
end.

SuperBrother打鼹鼠

测试数据 #0: Accepted, time = 0 ms, mem = 4780 KiB, score = 10

测试数据 #1: Accepted, time = 46 ms, mem = 4776 KiB, score = 10

测试数据 #2: Accepted, time = 7 ms, mem = 4776 KiB, score = 10

测试数据 #3: Accepted, time = 0 ms, mem = 4780 KiB, score = 10

测试数据 #4: Accepted, time = 46 ms, mem = 4776 KiB, score = 10

测试数据 #5: Accepted, time = 15 ms, mem = 4776 KiB, score = 10

测试数据 #6: Accepted, time = 15 ms, mem = 4780 KiB, score = 10

测试数据 #7: Accepted, time = 15 ms, mem = 4772 KiB, score = 10

测试数据 #8: Accepted, time = 31 ms, mem = 4780 KiB, score = 10

测试数据 #9: Accepted, time = 31 ms, mem = 4776 KiB, score = 10

(神马居然没秒杀?难道还有更快做法?!)

[vijos P1512] SuperBrother打鼹鼠的更多相关文章

  1. 【VIJOS】P1512 SuperBrother打鼹鼠

    [算法]二维树状数组 [题解] 1.树状数组尽量不要出现0,因此所有坐标+1 2.面积求法(默认1开始):(x1,y1)(x2,y2)=sum(x2,y2)-sum(x1-1,y2)-sum(x2,y ...

  2. vijos 1512 SuperBrother打鼹鼠

    背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...

  3. Vijos1512 SuperBrother打鼹鼠

    SuperBrother打鼹鼠 Vijos链接 题目描述: 在一个矩阵中,有三种操作: 1.后面跟着3个数x,y,k,表示在点(x,y)处新出现了k只鼹鼠. 2.后面跟着4个数x1,y1,x2,y2, ...

  4. [Vijos] SuperBrother打鼹鼠

    背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...

  5. 二维树状数组——SuperBrother打鼹鼠(Vijos1512)

    树状数组(BIT)是一个查询和修改复杂度都为log(n)的数据结构,主要用于查询任意两位之间的所有元素之和,其编程简单,很容易被实现.而且可以很容易地扩展到二维.让我们来看一道很裸的二维树状数组题: ...

  6. 树状数组训练题2:SuperBrother打鼹鼠(vijos1512)

    先给题目链接:打鼹鼠 这道题怎么写? 很明显是树状数组. 而且,很明显是二维树状数组. 如果你没学过二维的树状数组,那么戳开这里:二维树状数组 看完以后,你就会知道怎么做了. 没有什么好解释的,几乎就 ...

  7. [Vijos1512] SuperBrother打鼹鼠 (二维树状数组)

    传送门 直接搞就行. 注意下表re从零开始,而树状数组搞不了0,所以统一增加一个偏移量1. (话说数据随机是什么鬼?) # include <iostream> # include < ...

  8. vijos 1512

    SuperBrother打鼹鼠 背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游 ...

  9. VIJOS 1512SuperBrother打鼹鼠(二维BIT)

    呵呵.. 二维树状数组,第二维和第一维基本一样. --------------------------------------------------------------------------- ...

随机推荐

  1. Spring Bean配置默认为单实例 pring Bean生命周期

    Bean默认的是单例的. 如果不想单例需要如下配置:<bean id="user" class="..." scope="singleton&q ...

  2. 转:21副GIF动图让你了解各种数学概念

    21副GIF动图让你了解各种数学概念

  3. HBase 的存储结构

    HBase 的存储结构 2016-10-17 杜亦舒 HBase 中的表常常是超级大表,这么大的表,在 HBase 中是如何存储的呢?HBase 会对表按行进行切分,划分为多个区域块儿,每个块儿名为  ...

  4. 转载 uboot 命令

    1.bootm bootm [addr [arg ...]] - boot application image stored in memory passing arguments 'arg ...' ...

  5. eclipse 下的 merge 是如何实现的

    1 我从eclipse里面新建一个workspace2 新建一个分支3 再新建另外一个分支4 回到原分支, 修改某一行,比如a.txt的85行5 提交git add commit6 切换到新分支7 修 ...

  6. localhost访问不了

    安装phpstudy后,localhost访问不了,在忙了很久之后,我吧virtualbox卸载了,把百度云也卸载了,然后就可以了,可能是因为公司的网络限制比较多,但百度云也太肯了, 也是看别人装了, ...

  7. VC++源文件编码

    目录 第1章源代码文件    1 1.1 研究思路    1 1.2 实验结果    3 1.3 #pragma setlocale    4 1.4 /source-charset    5 1.5 ...

  8. Unity3D研究院编辑器之不实例化Prefab获取删除更新组件(十五)

    http://www.xuanyusong.com/archives/3727 感谢楼下的牛逼回复更正一下,我表示我也是才知道.. 其实不需要实例化也能查找,你依然直接用GetComponentsIn ...

  9. jmeter 构建一个LDAP测试计划

    添加用户 第一步你想做的每一个JMeter测试计划是添加一个线程组元素. 线程组告诉JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量. 继续添加ThreadGroup ...

  10. sina 行情api

    http://blog.csdn.net/simon803/article/details/7784682