[Tyvj1474]打鼹鼠
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]打鼹鼠相关推荐
- Tyvj1474 打鼹鼠
Description 在这个"打鼹鼠"的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大--).洞口都在 一个大小为n(n<=1024)的正方形中.这个正 ...
- vijos 1512 SuperBrother打鼹鼠
背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩"打鼹鼠"...... 描述 在这个"打鼹鼠&quo ...
- P2285 [HNOI2004]打鼹鼠
P2285 [HNOI2004]打鼹鼠 题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某 ...
- BZOJ 1207 打鼹鼠
Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探 ...
- 多态部分作业 3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)
package Day11; /*3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠),等等这样一个的继承层次结构.在基类中,提供对所有的Roden ...
- 【HNOI2004】【codevs1256】【BZOJ1207】打鼹鼠,小小DP
打鼹鼠 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出 ...
- 游戏王计算机兽,游戏王星杯卡——迅猛龙,再生圣经,入侵蠕虫,鼹鼠,幽世之血樱...
地卡--骏足之迅猛龙(3星/阶) 骏足之迅猛龙即为跑得快的意思,也有是瞬速的可能性在里面. 恐龙族/效果: 这张卡可以通常召唤也可以通过特殊召唤来使用.通过特殊召唤使用的场合,对方可以在对方的墓地选1 ...
- DP || HYSBZ 1207 打鼹鼠
n*n的网格,有m个鼹鼠,t时间会有一只鼹鼠出现在(x,y)点处,如果机器人也在这个点就可以打到鼹鼠 机器人初始位置任意,每秒可以移动一格,问最多打到多少鼹鼠 *解法:f[i]表示前i只鼹鼠打了多少个 ...
- VIJOS 1512SuperBrother打鼹鼠(二维BIT)
呵呵.. 二维树状数组,第二维和第一维基本一样. --------------------------------------------------------------------------- ...
最新文章
- 编译vim-8.2并配置jedi-vim插件
- 拥抱 Java 8 并行流吧,让执行速度飞起!
- 科大星云诗社动态20210427
- ajax如何实现、readyState五中状态的含义
- java中Mark接口_JVM源码分析之Java对象头实现
- 露雨资源库三(第一个.net2.0软件)-为控件增加自动完成功能
- 消息称苹果关联公司1.25亿美元购买车辆测试场 占地超过3万亩
- VB 用zint 库生成PDF417及其他条码
- python自动化运维快速入门 pdf 郑征_Python自动化运维快速入门
- 信息系统项目管理师学习笔记10-项目沟通管理和干系人管理
- OSG 集群渲染 cluster render 支持 Cave 和 powerwall 模式
- 华为p8 root android6,华为P8root工具
- 美国B1/B2签证免面试续签流程 2016年5月份更新
- 计算机应用基础离线作业2019,天大2019年4月考试《计算机应用基础》在线考核试题【标准答案】...
- 【Hadoop】P2 Hadoop简介
- python可以实现的功能_Python功能点实现:数据热更新
- 【产品经理】 产品进阶之路(二):如何为失明的人设计一款钟表
- 腾讯会议 for Mac(云视频会议软件)
- 微信小程序运营系列(一)
- 通过QQ查看对方地址
热门文章
- npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network 问题小记
- Google支付常见错误
- win10 ODBC数据源32位没有Microsoft Access Driver(*.mdb,*accdb)
- 2021春招最新分享:Java一线大厂高岗面试题解析合集(六大专题
- 风电场风速两参数weibull(威布尔)分布研究(Matlab代码实现)
- python获取计算股票技术指标DIF/DEA/MACD
- 图解算法数据结构刷题笔记02
- 内网穿透神器NPS的使用
- python中cos函数_Python代码中cos()函数有什么功能呢?
- python正则表达式(\S+)和 \d+的含义