[vijos P1512] SuperBrother打鼹鼠
这周好好码树状数组和线段树!!之前没写过二维树状数组,凭借一维的思路居然写了个比较像模像样的东西出来,原来我没那么脑残。唯一要注意的就是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打鼹鼠的更多相关文章
- 【VIJOS】P1512 SuperBrother打鼹鼠
[算法]二维树状数组 [题解] 1.树状数组尽量不要出现0,因此所有坐标+1 2.面积求法(默认1开始):(x1,y1)(x2,y2)=sum(x2,y2)-sum(x1-1,y2)-sum(x2,y ...
- vijos 1512 SuperBrother打鼹鼠
背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...
- Vijos1512 SuperBrother打鼹鼠
SuperBrother打鼹鼠 Vijos链接 题目描述: 在一个矩阵中,有三种操作: 1.后面跟着3个数x,y,k,表示在点(x,y)处新出现了k只鼹鼠. 2.后面跟着4个数x1,y1,x2,y2, ...
- [Vijos] SuperBrother打鼹鼠
背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...
- 二维树状数组——SuperBrother打鼹鼠(Vijos1512)
树状数组(BIT)是一个查询和修改复杂度都为log(n)的数据结构,主要用于查询任意两位之间的所有元素之和,其编程简单,很容易被实现.而且可以很容易地扩展到二维.让我们来看一道很裸的二维树状数组题: ...
- 树状数组训练题2:SuperBrother打鼹鼠(vijos1512)
先给题目链接:打鼹鼠 这道题怎么写? 很明显是树状数组. 而且,很明显是二维树状数组. 如果你没学过二维的树状数组,那么戳开这里:二维树状数组 看完以后,你就会知道怎么做了. 没有什么好解释的,几乎就 ...
- [Vijos1512] SuperBrother打鼹鼠 (二维树状数组)
传送门 直接搞就行. 注意下表re从零开始,而树状数组搞不了0,所以统一增加一个偏移量1. (话说数据随机是什么鬼?) # include <iostream> # include < ...
- vijos 1512
SuperBrother打鼹鼠 背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游 ...
- VIJOS 1512SuperBrother打鼹鼠(二维BIT)
呵呵.. 二维树状数组,第二维和第一维基本一样. --------------------------------------------------------------------------- ...
随机推荐
- java按值传递相关理解
Java没有引用传递只有按值传递,没有引用传递只有按值传递,值传递. 1. public class Test { public static void main(String[] args ...
- D3.js 饼状图的制作
1.数据 有如下数据,需要可视化: var dataset = [ 30 , 10 , 43 , 55 , 13 ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终 ...
- control file sequential read 等待事件
可能的原因 control file sequential read Reading from the control file. This happens in many cases. For ex ...
- Spring MVC 入门基础(一)
一.Spring Web MVC是什么? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解 ...
- Fedora 防火墙关闭与开启
重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 或者 /sbin/chkconfig --level 2345 iptable ...
- spring 编程式事务管理和声明式事务管理
编程式事务管理 Spring 的编程式事务管理概述 在 Spring 出现以前,编程式事务管理对基于 POJO 的应用来说是唯一选择.用过 Hibernate 的人都知道,我们需要在代码中显式调用be ...
- java的System.getProperty()方法可以获取的值
java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...
- struts2 token 使用说明
使用token标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中. token拦截器会判断客户端form提交的token和s ...
- sublime text修改TAB缩进为2个空格
打开sublime后在倒数第二项 preference---->Settings-user: 然后输入 "tab_size": 2, "translate_tabs ...
- HTML5自学笔记[ 6 ]data自定义数据
在标签中添加data-name属性并赋值,在js脚本中用ele.dataset.name就可以获取该属性的值.如: <div id="box" data-age=" ...