1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼
Time Limit: 15 Sec Memory Limit: 357 MB
Submit: 648 Solved: 273
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 0
0 1
1 0
0 0 1 1
Sample Output
HINT
Source
题解:一个超级神奇的题目,对于此题,首先很快可以想到用树状数组来搞,然后第一反应就是二维的,但想想这数据规模显然不现实。。。于是就想办法变成一维的,将Y坐标全部离散化(包括询问里面的),然后按照X坐标优先,Y坐标其次优先从小到大排序,然后遇到查询点就查询,否则就加入数组,然后没了,就是程序略长
/**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ var
i,j,k,l,m,n,nx,ny:longint;
a:array[..,..] of longint;
b:array[..,..] of longint;
c:array[..] of longint;
d:array[..,..] of longint;
e:array[..,..] of longint;
procedure swap(var x,y:longint);
var z:longint;
begin
z:=x;x:=y;y:=z;
end;
procedure sort(l,r:longint);
var i,j,x,y:longint;
begin
i:=l;j:=r;x:=d[(l+r) div ,];
repeat
while d[i,]<x do inc(i);
while d[j,]>x do dec(j);
if i<=j then
begin
swap(d[i,],d[j,]);
swap(d[i,],d[j,]);
inc(i);dec(j);
end;
until i>j;
if i<r then sort(i,r);
if l<j then sort(l,j);
end;
procedure sort0(l,r:longint);
var i,j,x,y,z:longint;
begin
i:=l;j:=r;x:=e[(l+r) div ,];y:=e[(l+r) div ,];z:=e[(l+r) div ,];
repeat
while (e[i,]<x) or ((e[i,]=x) and (e[i,]<y)) or ((e[i,]=x) and (e[i,]=y) and (e[i,]>z)) do inc(i);
while (e[j,]>x) or ((e[j,]=x) and (e[j,]>y)) or ((e[j,]=x) and (e[j,]=y) and (e[j,]<z)) do dec(j);
if i<=j then
begin
swap(e[i,],e[j,]);
swap(e[i,],e[j,]);
swap(e[i,],e[j,]);
inc(i);dec(j);
end;
until i>j;
if i<r then sort0(i,r);
if l<j then sort0(l,j);
end;
procedure sort1(l,r:longint);
var i,j,x,y:longint;
begin
i:=l;j:=r;x:=e[(l+r) div ,];
repeat
while e[i,]<x do inc(i);
while e[j,]>x do dec(j);
if i<=j then
begin
swap(e[i,],e[j,]);
swap(e[i,],e[j,]);
swap(e[i,],e[j,]);
swap(e[i,],e[j,]);
inc(i);dec(j);
end;
until i>j;
if i<r then sort1(i,r);
if l<j then sort1(l,j);
end;
procedure add(x,y:longint);
begin
if x<= then exit;
while x<=nx do
begin
inc(c[x],y);
inc(x,x and (-x));
end;
end;
function sum(x:longint):longint;
begin
sum:=;
while x> do
begin
inc(sum,c[x]);
dec(x,x and (-x));
end;
end;
begin
readln(n,m);
for i:= to n do readln(a[i,],a[i,]);
for i:= to m do readln(b[i*-,],b[i*-,],b[i*,],b[i*,]);
for i:= to n do
begin
d[i,]:=a[i,];
d[i,]:=i;
end;
for i:= to m* do
begin
d[n+i,]:=b[i,];
d[n+i,]:=-i;
end;
sort(,n+m*);j:=;d[,]:=-;
for i:= to n+m* do
begin
if d[i,]<>d[i-,] then inc(j);
if d[i,]> then a[d[i,],]:=j else b[-d[i,],]:=j;
end;
nx:=j;
for i:= to m do
begin
e[i*-,]:=b[i*-,]-;e[i*-,]:=b[i*-,]-;
e[i*-,]:=b[i*-,]-;e[i*-,]:=b[i*,];
e[i*-,]:=b[i*,];e[i*-,]:=b[i*-,]-;
e[i*,]:=b[i*,];e[i*,]:=b[i*,];
end;
for i:= to n do begin e[m*+i,]:=a[i,];e[m*+i,]:=a[i,]; end;
for i:= to m*+n do e[i,]:=i;
sort0(,m*+n);
fillchar(c,sizeof(c),);
for i:= to m*+n do if e[i,]<=(m*) then e[i,]:=sum(e[i,]) else add(e[i,],);
sort1(,m*+n);
for i:= to m do writeln(e[i*,]-e[i*-,]-e[i*-,]+e[i*-,]);
readln;
end.
1935: [Shoi2007]Tree 园丁的烦恼的更多相关文章
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼( 差分 + 离散化 + 树状数组 )
假如矩阵范围小一点就可以直接用二维树状数组维护. 这道题, 差分答案, 然后一维排序, 另一维离散化然后树状数组维护就OK了. ----------------------------------- ...
- bzoj1382 1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 1261 Solved: 578[Submit] ...
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 +CDQ分治
1935: [Shoi2007]Tree 园丁的烦恼 参考与学习:https://www.cnblogs.com/mlystdcall/p/6219421.html 题意 在一个二维平面中有n颗树,有 ...
- bzoj 1935: [Shoi2007]Tree 园丁的烦恼
Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个园丁道: ...
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 [树状数组 离线 离散化]
传送门 刚才我还在郁闷网上怎么没人用$CDQ$分治做 突然发现根本没有时间序.... #include<iostream> #include<cstdio> #include& ...
- BZOJ.1935.[SHOI2007]Tree园丁的烦恼(CDQ分治 三维偏序)
题目链接 矩形查询可以拆成四个点的前缀和查询(树套树显然 但是空间不够) 每个操作表示为(t,x,y),t默认有序,对x分治,y用树状数组维护 初始赋值需要靠修改操作实现. //119964kb 43 ...
- [bzoj1935][shoi2007]Tree 园丁的烦恼(树状数组+离线)
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 980 Solved: 450[Submit][ ...
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 552 Solved: 220[Submit][ ...
- bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...
随机推荐
- swift中标签的使用
1,标签的创建 1 2 3 4 5 6 7 8 9 10 import UIKit class ViewController: UIViewController { override func ...
- I帧/P帧/B帧---术语解释
视频压缩中,每帧代表一幅静止的图像.而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的. 简单地说,I帧是关键帧,属于帧内压缩.就是和AVI的压缩是一样的. P是向前搜索的意思.B ...
- .Net多线程编程—误用点分析
1 共享变量问题 错误写法: 所有的任务可能会共享同一个变量,所以输出结果可能会一样. public static void Error() { ;i<;i++) { Task.Run(() = ...
- 【原】小写了一个cnode的小程序
小程序刚出来的第一天,朋友圈被刷屏了,所以趁周末也小玩了一下小程序.其实发觉搭建一个小程序不难,只要给你一个demo,然后自己不断的查看文档,基本就可以入门了,不过对于这种刚出来的东西,还是挺多坑的, ...
- Docker环境中部署OwnCloud 9.0
整体思路: 1.官方获取mysql.php+apache镜像: 2.基于php+apache,创建OwnCloud镜像: 3.启动mysql镜像: 4.启动OwnCloud镜像,链接mysql镜像,访 ...
- ASP.NET\MVC 解决C#上传图片质量下降,图片模糊,水印有杂点的问题
对图片处理这一块不是很懂,自己写不出来,这些年一直没有停止找一个上传图片质量不下降,加水印不会导致模糊和水印周边产生杂点的代码. 网上基本上99.9%的代码处理图片质量都是下面这两句: //设置质量 ...
- iOS 插件化开发汇总 Small框架
应用插件化背景 目前很多应用功能越来越多,软件显得越来越臃肿.因此插件化就成了很多软件发展的必经之路,比如支付宝这种平台级别的软件: 页上密密麻麻的功能,而且还在增多,照这个趋势发展下去,软件包的大小 ...
- region URL请求数据
#region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...
- 蓝桥网试题 java 基础练习 矩形面积交
------------------------------------------------------------------------------------------- 思路见锦囊2 - ...
- 详谈Struts2
介绍struts2: struts2是一个基于mvc设计模式的web层框架. 详谈struts2的执行流程: struts2的执行流程:用户发送请求---->首先经过Struts2的核心过滤器- ...