COGS1752. [BOI2007]摩基亚Mokia CDQ
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的更多相关文章
- COGS1752. [BOI2007]摩基亚Mokia
1752. [BOI2007]摩基亚Mokia ★★☆ 输入文件:mokia.in 输出文件:mokia.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 摩尔瓦 ...
- COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)
题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它 ...
- COGS1752. [BOI2007]摩基亚Mokia(CDQ,树状数组)
题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回 ...
- COJS 1752. [BOI2007]摩基亚Mokia
1752. [BOI2007]摩基亚Mokia ★★★ 输入文件:mokia.in 输出文件:mokia.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 摩尔瓦 ...
- 分治(CDQ):[BOI2007]摩基亚Mokia
[题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能 ...
- 【COGS1752】 BOI2007—摩基亚Mokia
http://cogs.pro/cogs/problem/problem.php?pid=1752 (题目链接) 题意 给出$n*n$的棋盘,单点修改,矩阵查询. Solution 离线以后CDQ分治 ...
- Bzoj1176:Mokia&Cogs1752:[BOI2007]摩基亚Mokia
题目 Cogs 没有Bzoj的权限号 Sol 离线,\(CDQ\)分治,把询问拆成\(4\)个,变成每次求二位前缀和 那么只要一个修改操作(关键字为时间,\(x\),\(y\))都在这个询问前,就可以 ...
- [COGS 1752] 摩基亚Mokia
照例先上题面 1752. [BOI2007]摩基亚Mokia 输入文件:mokia.in 输出文件:mokia.out 时间限制:1.5 s 内存限制:128 MB [题目描述] 摩尔瓦多的移 ...
- [BOI2007]Mokia 摩基亚(CDQ分治)
upd:\((x1,y1)(x2,y2)\)表示以\((x1,y1)\)为左上端点 \((x2,y2)\)为右下端点的矩形 本来以为是一道二位树状数组的模板,但是看数据范围之后就放弃了,边界既然到了2 ...
随机推荐
- PHP Laravel 5.4 环境搭建
1.php运行环境搭建 在win10系统上进行搭建的,使用的是wamp环境 wampserver3_x86_apache2.4.17_mysql5.7.9_php5.6.15.exe,安装包中集成了 ...
- vi-vim常用命令
vi-vim常用命令 1 简介 在UNIX系统中,创建和修改配置文件.shell脚本.初始化文件.编写程序都离不开VI. 1 vi[1]属于两个主要的UNIX规范:POSIX和单一UNIX规 ...
- 08 datetime与logging模块(进阶)
datetime与logging模块 阶段一:日期与时间 1.datetime 模块中 主要类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间对象h ...
- 2.从print到自省
print是一个函数 为什么print是一个函数呢?可以在交互式解释器下 输入: >>> type(print) 输出: <class 'builtin_function_ ...
- python爬虫 爬取steam热销游戏
好久没更新了啊...最近超忙 这学期学了学python 感觉很有趣 就写着玩~~~ 爬取的页面是:https://store.steampowered.com/search/?filter=globa ...
- Python3 os模块&sys模块&hashlib模块
''' os模块 非常重要的模块 ''' import os # print(os.getcwd()) # 获取当前工作目录 # os.chdir(r'路径名') # 改变当前工作目录 # print ...
- 【SAPUI5】ODataを構成するもの
はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...
- Django学习之天气调查实例(1):工程的开始
开始学习Django,一步一个脚印的进行.思考再三,还是以一个实例来开始学习.手里面正好有几万条单位天气传感器收集的数据,想做一个网页版的天气统计查询之类的小应用,也可以给学生体验,方便教学的进行(尽 ...
- 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer
1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30; int y=30; x==y; //true 基本数据类型 简单类型(基本类型) bo ...
- 安装Sql Server 2008的时候报错说找不到某个安装文件
在安装Sql Server 2008的时候,报错说找不到某个安装文件,但是这个文件明明在那,百思不得其解. 最后看到一个老外的文章里面说,你要确认,你能访问到这个文件 ...