Description
在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……)。洞口都在一个大小为n(n<=1024)的正方形中。这个正方形在一个平面直角坐标系中,左下角为(0,0),右上角为(n-1,n-1)。洞口所在的位置都是整点,就是横纵坐标都为整数的点。而SuperBrother也不时地会想知道某一个范围的鼹鼠总数。这就是你的任务。

Input
每个输入文件有多行。
第一行,一个数n,表示鼹鼠的范围。
以后每一行开头都有一个数m,表示不同的操作:
m=1,那么后面跟着3个数x,y,k(0<=x,y<n),表示在点(x,y)处新出现了k只鼹鼠;
m=2,那么后面跟着4个数x1,y1,x2,y2(0<=x1<=x2<n,0<=y1<=y2<n),表示询问矩形(x1,y1)-(x2,y2)内的鼹鼠数量;
m=3,表示老师来了,不能玩了。保证这个数会在输入的最后一行。
询问数不会超过10000,鼹鼠数不会超过maxlongint。

Output
对于每个m=2,输出一行数,这行数只有一个数,即所询问的区域内鼹鼠的个数。

Sample Input
4
1 2 2 5
2 0 0 2 3
3

Sample Output
5


二维线段树板子题,其实二维线段树没那么高大上,维护一个以x排序的线段树,这棵线段树的每个节点都是维护以y排序的线段树,空间\(O(n^2)\),如果n大点就要用到类似主席树的动态开点技巧了

/*program from Wolfycz*/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f7f
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline int read(){int x=0,f=1;char ch=getchar();for (;ch<'0'||ch>'9';ch=getchar())  if (ch=='-')    f=-1;for (;ch>='0'&&ch<='9';ch=getchar())    x=(x<<1)+(x<<3)+ch-'0';return x*f;
}
inline void print(int x){if (x>=10)     print(x/10);putchar(x%10+'0');
}
const int N=1024;
#define ls (p<<1)
#define rs (p<<1|1)
int n;
struct Segment{int tree[(N<<2)+10];void change(int p,int l,int r,int x,int v){if (l==r){tree[p]+=v;return;}int mid=(l+r)>>1;if (x<=mid) change(ls,l,mid,x,v);else    change(rs,mid+1,r,x,v);tree[p]=tree[ls]+tree[rs];}int Query(int p,int l,int r,int x,int y){if (x<=l&&r<=y) return tree[p];int mid=(l+r)>>1,res=0;if (x<=mid) res+=Query(ls,l,mid,x,y);if (y>mid)  res+=Query(rs,mid+1,r,x,y);return res;}
}T[(N<<2)+10];
void change(int p,int l,int r,int x,int y,int v){T[p].change(1,0,n,y,v);if (l==r)   return;int mid=(l+r)>>1;if (x<=mid) change(ls,l,mid,x,y,v);else    change(rs,mid+1,r,x,y,v);
}
int Query(int p,int l,int r,int x,int y,int X,int Y){if (x<=l&&r<=y) return T[p].Query(1,0,n,X,Y);int mid=(l+r)>>1,res=0;if (x<=mid) res+=Query(ls,l,mid,x,y,X,Y);if (y>mid)  res+=Query(rs,mid+1,r,x,y,X,Y);return res;
}
int main(){n=read();while (true){int t=read();if (t==1){int x=read(),y=read(),k=read();change(1,0,n,x,y,k);}if (t==2){int ox=read(),oy=read(),ex=read(),ey=read();printf("%d\n",Query(1,0,n,ox,ex,oy,ey));}if (t==3)   break;}return 0;
}

转载于:https://www.cnblogs.com/Wolfycz/p/9465539.html

[Tyvj1474]打鼹鼠相关推荐

  1. Tyvj1474 打鼹鼠

    Description 在这个"打鼹鼠"的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大--).洞口都在 一个大小为n(n<=1024)的正方形中.这个正 ...

  2. vijos 1512 SuperBrother打鼹鼠

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

  3. P2285 [HNOI2004]打鼹鼠

    P2285 [HNOI2004]打鼹鼠 题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某 ...

  4. BZOJ 1207 打鼹鼠

    Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探 ...

  5. 多态部分作业 3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)

    package Day11; /*3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠),等等这样一个的继承层次结构.在基类中,提供对所有的Roden ...

  6. 【HNOI2004】【codevs1256】【BZOJ1207】打鼹鼠,小小DP

    打鼹鼠 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出 ...

  7. 游戏王计算机兽,游戏王星杯卡——迅猛龙,再生圣经,入侵蠕虫,鼹鼠,幽世之血樱...

    地卡--骏足之迅猛龙(3星/阶) 骏足之迅猛龙即为跑得快的意思,也有是瞬速的可能性在里面. 恐龙族/效果: 这张卡可以通常召唤也可以通过特殊召唤来使用.通过特殊召唤使用的场合,对方可以在对方的墓地选1 ...

  8. DP || HYSBZ 1207 打鼹鼠

    n*n的网格,有m个鼹鼠,t时间会有一只鼹鼠出现在(x,y)点处,如果机器人也在这个点就可以打到鼹鼠 机器人初始位置任意,每秒可以移动一格,问最多打到多少鼹鼠 *解法:f[i]表示前i只鼹鼠打了多少个 ...

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

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

最新文章

  1. 编译vim-8.2并配置jedi-vim插件
  2. 拥抱 Java 8 并行流吧,让执行速度飞起!
  3. 科大星云诗社动态20210427
  4. ajax如何实现、readyState五中状态的含义
  5. java中Mark接口_JVM源码分析之Java对象头实现
  6. 露雨资源库三(第一个.net2.0软件)-为控件增加自动完成功能
  7. 消息称苹果关联公司1.25亿美元购买车辆测试场 占地超过3万亩
  8. VB 用zint 库生成PDF417及其他条码
  9. python自动化运维快速入门 pdf 郑征_Python自动化运维快速入门
  10. 信息系统项目管理师学习笔记10-项目沟通管理和干系人管理
  11. OSG 集群渲染 cluster render 支持 Cave 和 powerwall 模式
  12. 华为p8 root android6,华为P8root工具
  13. 美国B1/B2签证免面试续签流程 2016年5月份更新
  14. 计算机应用基础离线作业2019,天大2019年4月考试《计算机应用基础》在线考核试题【标准答案】...
  15. 【Hadoop】P2 Hadoop简介
  16. python可以实现的功能_Python功能点实现:数据热更新
  17. 【产品经理】 产品进阶之路(二):如何为失明的人设计一款钟表
  18. 腾讯会议 for Mac(云视频会议软件)
  19. 微信小程序运营系列(一)
  20. 通过QQ查看对方地址

热门文章

  1. npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network 问题小记
  2. Google支付常见错误
  3. win10 ODBC数据源32位没有Microsoft Access Driver(*.mdb,*accdb)
  4. 2021春招最新分享:Java一线大厂高岗面试题解析合集(六大专题
  5. 风电场风速两参数weibull(威布尔)分布研究(Matlab代码实现)
  6. python获取计算股票技术指标DIF/DEA/MACD
  7. 图解算法数据结构刷题笔记02
  8. 内网穿透神器NPS的使用
  9. python中cos函数_Python代码中cos()函数有什么功能呢?
  10. python正则表达式(\S+)和 \d+的含义