CDQ的板子题

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 2000010
using namespace std;
inline int read()
{
int sum=;
char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')
{
sum=(sum<<)+(sum<<)+ch-'';
ch=getchar();
}
return sum;
}
int Y[MAXN],W;
inline void update(int pos,int p)
{
while(pos<=W)
{
Y[pos]+=p;
pos+=pos&(-pos);
}
}
inline int get_sum(int pos)
{
int sum=;
while(pos>)
{
sum+=Y[pos];
pos-=pos&(-pos);
}
return sum;
}
struct QUERY
{
int opt,id,x,y,t;
}A[],temp[];
int sz;
int Ans[];
int comp(const QUERY a,const QUERY b)
{
return a.x<b.x||(a.x==b.x&&a.opt<b.opt);
}
void CDQ(int l,int r)
{
if(l==r)return;
int mid=(l+r)>>;
for(int i=l;i<=r;i++)
if(A[i].opt)
{
if(A[i].id>mid)
{
if(A[i].t>)
Ans[A[i].t]+=get_sum(A[i].y);
else
Ans[-A[i].t]-=get_sum(A[i].y);
}
}
else
if(A[i].id<=mid)
update(A[i].y,A[i].t);
for(int i=l;i<=r;i++)
if(A[i].opt==&&A[i].id<=mid)
update(A[i].y,-A[i].t);
int l1=l,l2=mid+;
for(int i=l;i<=r;i++)
if(A[i].id<=mid)
temp[l1++]=A[i];
else
temp[l2++]=A[i];
for(int i=l;i<=r;i++)
A[i]=temp[i];
CDQ(l,mid);
CDQ(mid+,r);
}
int T;
void Init()
{
W=read(),W=read();
while()
{
int opt=read();
if(opt==)
{
A[++sz].opt=;
A[sz].x=read();
A[sz].y=read();
A[sz].id=sz;
A[sz].t=read();
continue;
}
if(opt==)
{
T++;
int X1=read(),Y1=read(),X2=read(),Y2=read();
A[++sz].opt=;
A[sz].id=sz;
A[sz].x=X2;
A[sz].y=Y2;
A[sz].t=T;
if(X1!=)
{
A[++sz].opt=;
A[sz].id=sz;
A[sz].x=X1-;
A[sz].y=Y2;
A[sz].t=-T;
}
if(Y1!=)
{
A[++sz].opt=;
A[sz].id=sz;
A[sz].x=X2;
A[sz].y=Y1-;
A[sz].t=-T;
}
if(X1!=&&Y1!=)
{
A[++sz].opt=;
A[sz].id=sz;
A[sz].x=X1-;
A[sz].y=Y1-;
A[sz].t=T;
}
}
if(opt==)break;
}
sort(A+,A+sz+,comp);
CDQ(,sz);
}
inline void print()
{
for(int i=;i<=T;i++)
printf("%d\n",Ans[i]);
}
int main()
{
freopen("mokia.in","r",stdin);
freopen("mokia.out","w",stdout);
Init();
print();
return ;
}

COGS1752. [BOI2007]摩基亚Mokia CDQ的更多相关文章

  1. COGS1752. [BOI2007]摩基亚Mokia

    1752. [BOI2007]摩基亚Mokia ★★☆   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦 ...

  2. COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)

    题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它 ...

  3. COGS1752. [BOI2007]摩基亚Mokia(CDQ,树状数组)

    题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回 ...

  4. COJS 1752. [BOI2007]摩基亚Mokia

    1752. [BOI2007]摩基亚Mokia ★★★   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦 ...

  5. 分治(CDQ):[BOI2007]摩基亚Mokia

    [题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能 ...

  6. 【COGS1752】 BOI2007—摩基亚Mokia

    http://cogs.pro/cogs/problem/problem.php?pid=1752 (题目链接) 题意 给出$n*n$的棋盘,单点修改,矩阵查询. Solution 离线以后CDQ分治 ...

  7. Bzoj1176:Mokia&Cogs1752:[BOI2007]摩基亚Mokia

    题目 Cogs 没有Bzoj的权限号 Sol 离线,\(CDQ\)分治,把询问拆成\(4\)个,变成每次求二位前缀和 那么只要一个修改操作(关键字为时间,\(x\),\(y\))都在这个询问前,就可以 ...

  8. [COGS 1752] 摩基亚Mokia

    照例先上题面 1752. [BOI2007]摩基亚Mokia 输入文件:mokia.in   输出文件:mokia.out 时间限制:1.5 s   内存限制:128 MB [题目描述] 摩尔瓦多的移 ...

  9. [BOI2007]Mokia 摩基亚(CDQ分治)

    upd:\((x1,y1)(x2,y2)\)表示以\((x1,y1)\)为左上端点 \((x2,y2)\)为右下端点的矩形 本来以为是一道二位树状数组的模板,但是看数据范围之后就放弃了,边界既然到了2 ...

随机推荐

  1. Git----使用WebHook实现代码自动部署

    起因: 经常本地push到gitee等线上代码仓库,然后登陆服务器在进行pull,很麻烦,想偷懒怎么办?使用git的webhook实现! 1.实现原理 1.1本地提交推送 1.2线上仓库监听push动 ...

  2. JavaSE 第二次学习随笔(关于内存的小题)

    class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println(&quo ...

  3. linux实现DNS轮询实现负载平衡

    DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的 DNS 服务器 Cache 的影响:windows 客户端也有一个DNS Cache.这些都会影响 DNS 轮询的效果.因此 ...

  4. SSH远程登录和端口转发详解

     SSH远程登录和端口转发详解   介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实 ...

  5. 关于在各种int类型选择时的考虑

    整数类型int在不同版本的c标准中不断丰富. 最初的K&R标准给出了int作为整数的基本类型,给出long.short.unsigned作为int的变式.在c90中又加入了signed. 在c ...

  6. 【struts2】struts2的使用

    1.使用步骤 1) 导入struts2的支持jar包 名称 说明 struts2-core-2.3.4.1.jar Structs2的核心类库 xwork-core-2.3.4.1.jar xwork ...

  7. R语言学习笔记(七): 排序函数:sort(), rank(), order()

    sort() sort()函数直接对函数进行排序,并返回排序结果. > a <- c(12,4,6,5) > sort(a) [1] 4 5 6 12 rank() rank()函数 ...

  8. Git的使用规范(二)

    今天,我们来介绍一下git的一些命令行,来帮我们后面可以面对一些情况的时候,我们可以有一些解决的方法 1.git查看历史记录最全的命令行 git log --pretty=raw 2.对于一下的几个情 ...

  9. 20145202 《网络对抗技术》 PC平台逆向破解

    20145202 <网络对抗技术> PC平台逆向破解 准备工作 先将环境设置为:堆栈可执行.地址随机化关闭 参考http://git.oschina.net/wildlinux/NetSe ...

  10. 【数据库】 SQL 常用语句之系统语法

    [数据库] SQL 常用语句之系统语法 1. 获取取数据库服务器上所有数据库的名字 SELECT name FROM master.dbo.sysdatabases 2. 获取取数据库服务器上所有非系 ...