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 ...
随机推荐
- 虚拟机服务没有启动的 CentOS 和 Ubuntu 无法上网
测试用 vmware 安装 OSX,安装补丁时要停止 vmware 的服务.如下图: 结果忘记启动了,导致 centos\ubuntu 等所有虚拟机都无法上网...所有的 启动这四个服务后,一切恢复正 ...
- python3 练习题100例 (二十八)打印一定范围内的素数
题目内容: 给定一个大于2的正整数n,打印出小于n(不包括n且n不大于100)的所有素数. 要求将符合条件的输出填入一个列表中,打印的结果为该列表. 输入格式: 共一行,为一个大于2的正整数 输出格式 ...
- python学习之面向对象程序设计的一些思考
将属于一类的对象放在一起: 如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法实现. 不要让对象过于亲密: 方法应该只关心自己实例的特性,让其他实例管理自己的状态. 简单就好: 让方法小 ...
- rails中如何在a标签中添加其他标签
最近在用rails写一个项目练练手,然后遇到了一个问题,就是用 <% link_to("首页", root_path) %> 生成一个a标签,之后就在想我怎么在这个a标 ...
- 修复网站漏洞对phpmyadmin防止被入侵提权的解决办法
phpmyadmin是很多网站用来管理数据库的一个系统,尤其是mysql数据库管理的较多一些,最近phpmysql爆出漏洞,尤其是弱口令,sql注入漏洞,都会导致mysql的数据账号密码被泄露,那么如 ...
- ctf题目writeup(1)
2019/1/28 题目来源:爱春秋 https://www.ichunqiu.com/battalion?t=1 1. 该文件是一个音频文件: 首先打开听了一下,有短促的长的....刚开始以为是摩斯 ...
- linux文件IO操作篇 (一) 非缓冲文件
文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...
- Failed to read candidate component class错误分析
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component c ...
- Spring BindingResult验证框架Validation特殊用法
使用注解@Valid(实体属性校验) Springboot实现 Spring实现 一.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate ...
- Python的类(二)
一.类的重写 对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写.为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名.这样, Python将不会考虑这个父类方法,而只关注你 ...