题目名称 451. 布匠问题
输入输出 fabric.in/out
难度等级 ★★★
时间限制 3000 ms (3 s)
内存限制 256 MiB
测试数据 10
题目来源 GravatarPom 于2010-07-03加入
开放分组 全部用户
提交状态
分类标签
线段树 四分树
分享题解
通过:20, 提交:41, 通过率:48.78%
GravatarAPWTMECRD 100 1.610 s 4.18 MiB C++
Gravatar烟雨 100 1.626 s 4.18 MiB C++
Gravatar@@@ 100 1.708 s 4.21 MiB C++
Gravatar梦那边的美好ET 100 1.711 s 4.21 MiB C++
GravatarFoolMike 100 1.711 s 30.81 MiB C++
GravatarYueYueZha 100 2.408 s 38.44 MiB C++
GravatarYueYueZha 100 2.484 s 38.44 MiB C++
Gravatar822 100 2.717 s 38.44 MiB C++
Gravatar822 100 2.764 s 38.44 MiB C++
GravatarTBK 100 3.217 s 1.22 MiB C++
关于 布匠问题 的近10条评论(全部评论)
2^k分治树复杂度似乎和KD树在k较小的情况下是相同的,而且2^k分治树常数上比KD树要优秀
原来高一YY出来的这玩意儿真的是能用的!
GravatarFoolMike
2017-05-31 13:22 3楼
K-D树上打延迟标记是什么感觉?嗯!就是这个感觉!
Gravatar葳棠殇
2016-04-21 07:47 2楼
二维线段树写不出来,一维线段树又超时,然后自己YY了个四分树AC了,看看大家的代码都是暴力。。想死的心都有了TUT
GravatarYueYueZha
2014-09-11 19:06 1楼

451. 布匠问题

★★★   输入文件:fabric.in   输出文件:fabric.out   简单对比
时间限制:3 s   内存限制:256 MiB

                         布匠的问题
     布匠L所居住的城市遭遇了虫灾!这是一个天大的坏消息,因为虫子会吃掉L的布匹。
但是L是一个优秀的布匠,他可以给自己的布打补丁,弥补被虫子吃掉的部分。
从现在到虫灾结束的每一天里,虫子都可能会袭击L的布匹,但是如果某一天没有发生袭击事件,L将会为他的布匹打补丁,或者向你询问他的布匹的某一个区域内有多少个虫洞。
L的布被描述为一个N*M的矩形,矩形分为N*M个单元格。每次虫群袭击会吃掉一块R*Q的矩形布块(虫群可能会袭击没有布的区域,比如前面已经被吃掉了),如果没有虫群袭击,当日L将会将一块S*T的矩形区域内的所有被吃掉的单元格打上补丁,或者向你发出一次询问。请设计程序对L的每次询问做出回答。

输入格式:
第一行三个整数 N,M,Q,(Q为虫灾持续的天数)
第2到第Q+1行,每行5个整数
O x1 y1 x2 y2
若O=0 表示今天L向你发出询问,在左上角坐标为x1,y1右下角坐标为x2,y2的矩形内有多少个被虫吃掉的单元格
若O=1表示今天虫群将袭击左上角坐标为x1,y1右下角坐标为x2,y2的矩形布匹
若O=2表示今天L将为左上角坐标为x1,y1右下角坐标为x2,y2的矩形布匹内缺失的单元格打上补丁。(若没有虫洞则不打补丁,打的补丁后来也可能会被吃掉)

输出格式:
对于L的每一个询问输出一个答案,每行一个

样例输入 fabric.in
4 5 4
1 2 2 3 4
0 1 2 2 5
2 3 1 3 3
0 1 1 4 5
样例输出 fabric.out
3
4
数据规模
对于30%的数据 1<=N,M<=200;
对于100%的数据 1<=N,M<=1000,1<=Q<=10000

 

By Pom