[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 Base64编码解码实现
我尝试过两种方式:java自带的sun.misc的工具类,还有commons-codec.jar 1.sun.misc的工具类 String encoderStr = null; BASE64Enco ...
- Subversion中文手册(svnbook) TortoiseSVN中文帮助手册
文档地址 http://svndoc.iusesvn.com/
- c语言数据结构:递归的替代-------回溯算法
1.要理解回溯就必须清楚递归的定义和过程. 递归算法的非递归形式可采用回溯算法.主要考虑的问题在于: 怎样算完整的一轮操作. 执行的操作过程中怎样保存当前的状态以确保以后回溯访问. 怎样返回至上一次未 ...
- db:seed 更好的生成测试数据
make:model -m -> 在database/migrations/目录下生成的table表中设置表的字段名和字段类型->在app/目录下对应的模型文件中设置可添加字段 -> ...
- BeautifulSoup 常用方法
#输出所得标签的‘’属性值 获取 head里面的第一个meta的content值 soup.head.meta['content'] 获取第一个span的内容 soup.span.string 获取第 ...
- js 时间处理
1.格式化时间 function GetDateTimeFormatter(value) { if (value == undefined) { return &q ...
- Servlet视频学习笔记 57-58 (servlet入门和调用过程)
网易云课堂<30天轻松掌握JavaWeb视频>servlet部分 课时57 servlet开发入门 servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术.S ...
- uva 1631
1631 Locker A password locker with N digits, each digit can be rotated to 0-9 circularly. You can ro ...
- Javascript面向对象编程:构造函数的继承
今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...
- javascript 把字符串转换为对象
function strToJson(str) { var json = (new Function("return " + str))(); return json;}