题目链接

$CDQ$分治。

考虑此时在区间$[l,r]$中,要计算$[l,mid]$中的操作对$[mid+1,r]$中的询问的影响。

计算时,排序加上树状数组即可。

然后再递归处理$[l,mid]$和$[mid+1,r]$。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAX=2000005;
struct data
{
int opt,x,y,y1,w,num;
data(int a=0,int b=0,int c=0,int d=0,int e=0,int f=0)
{opt=a,x=b,y=c,y1=d,w=e,num=f;}
}s[200005],g[200005];
bool cmp(data u,data v)
{return (u.x==v.x)?(u.opt<v.opt):(u.x<v.x);}
int ans[10005],val[2000100];
int lowbit(int x) {return x&(-x);}
void add(int x,int y) {for(;x<=MAX;x+=lowbit(x)) val[x]+=y;}
int ask(int x) {int ans=0;for(;x;x-=lowbit(x))ans+=val[x];return ans;}
void cln(int x) {for(;x<=MAX;x+=lowbit(x)) val[x]=0;}
int Get(int l,int r) {return ask(r)-ask(l-1);}
void Sol(int l,int mid,int r)
{
int k=0;
for(int i=l;i<=mid;i++)
if(s[i].opt==1) g[++k]=s[i];
for(int i=mid+1;i<=r;i++)
if(s[i].opt!=1) g[++k]=s[i];
sort(g+1,g+k+1,cmp);
for(int i=1;i<=k;i++)
{
if(g[i].opt==1) add(g[i].y,g[i].w);
if(g[i].opt==2) ans[g[i].num]-=Get(g[i].y,g[i].y1);
if(g[i].opt==3) ans[g[i].num]+=Get(g[i].y,g[i].y1);
}
for(int i=1;i<=k;i++)
if(g[i].opt==1) cln(g[i].y);
}
void CDQ(int l,int r)
{
if(l==r) return;
int mid=(l+r)>>1;
CDQ(l,mid),CDQ(mid+1,r);
Sol(l,mid,r);
}
int main()
{
int n=0,cnt=0,tot=0;
scanf("%d%d",&n,&n);
for(;;)
{
int opt=0;
scanf("%d",&opt);
if(opt==3) break;
if(opt==1)
{
s[++cnt].opt=1;
scanf("%d%d%d",&s[cnt].x,&s[cnt].y,&s[cnt].w);
s[cnt].x++,s[cnt].y++;
}
if(opt==2)
{
tot++;
s[++cnt].opt=2,s[cnt].num=tot;
scanf("%d%d",&s[cnt].x,&s[cnt].y),s[cnt].y++;
s[++cnt].opt=3,s[cnt].num=tot;
scanf("%d%d",&s[cnt].x,&s[cnt].y1),s[cnt].x++,s[cnt].y1++;
s[cnt].y=s[cnt-1].y;
s[cnt-1].y1=s[cnt].y1;
}
}
CDQ(1,cnt);
for(int i=1;i<=tot;i++) printf("%d\n",ans[i]);
return 0;
}

Luogu P4390

Luogu P4390 [BOI2007]Mokia 摩基亚 | CDQ分治的更多相关文章

  1. P4390 [BOI2007]Mokia 摩基亚 (CDQ解决三维偏序问题)

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

  2. cogs1752[boi2007]mokia 摩基亚 (cdq分治)

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

  3. 洛谷 P4390 [BOI2007]Mokia 摩基亚 解题报告

    P4390 [BOI2007]Mokia 摩基亚 题目描述 摩尔瓦多的移动电话公司摩基亚(\(Mokia\))设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户 ...

  4. [洛谷P4390][BOI2007]Mokia 摩基亚

    题目大意: 维护一个W*W的矩阵,每次操作可以增加某格子的权值,或询问某子矩阵的总权值. 题解:CDQ分治,把询问拆成四个小矩形 卡点:无 C++ Code: #include <cstdio& ...

  5. P4390 [BOI2007]Mokia 摩基亚

    传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,y ...

  6. P4390 [BOI2007]Mokia 摩基亚(cdq分治)

    一样是cdq的板子 照着园丁的烦恼就好了 代码 #include <cstdio> #include <cstring> #include <algorithm> ...

  7. 【BZOJ1176】[BOI2007]Mokia 摩基亚

    [BZOJ1176][BOI2007]Mokia 摩基亚 题面 bzoj 洛谷 题解 显然的\(CDQ\)\(/\)树套树题 然而根本不想写树套树,那就用\(CDQ\)吧... 考虑到点\((x1,y ...

  8. [BOI2007]Mokia 摩基亚

    Description: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户C的位置在哪?"的问题,精确到毫 ...

  9. 【cdq分治】【P4390】[BOI2007]Mokia 摩基亚

    Description 给你一个 \(W~\times~W\) 的矩阵,每个点有权值,每次进行单点修改或者求某子矩阵内权值和,允许离线 Input 第一行是两个数字 \(0\) 和矩阵大小 \(W\) ...

随机推荐

  1. 215 day01_Object类、常用API

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...

  2. linux 服务器资源 监控工具

    工具一:vmstat(服务端) 一.vmstat选项参数解释 -V:显示vmstat版本信息 -n:只在开始时显示一次各字段名称 -a:显示活跃和非活跃内存 -d:显示各个磁盘相关统计信息 -D:显示 ...

  3. 大前端快闪:package.json文件知多少?

    最近在公司某项目参与了一些前端工作,作为后端抠脚大汉,改点前端细节磕磕绊绊,改点大前端.工程化.HTTP交互倒也还能做到柳暗花明. 于是打算用后端程序猿的视角记录一些{大前端}的知识快闪,也算是帮助读 ...

  4. golang 开发环境 配置 go语言 liteIDE

    Mac: * 下载go安装包 go语言中文网 ** 通过源码编译安装需要先安装go1.4 wget https://studygolang.com/dl/golang/go1.10.3.src.tar ...

  5. ❤️❤️爆肝3万字整理小白快速入门分布式版本管理软件:Git,图文并茂(建议收藏)--已码一万字❤️❤️

    @ 目录 什么是Git SVN VS Git 什么是版本控制 安装Git 谁在操作? Git本地仓库 本地仓库构造 重点 Git基本操作 git add git commit git diff git ...

  6. 淘宝商品html--网页结构

    淘宝商品html--网页结构 本篇爬虫紧接上一篇关于 泸州老窖 的爬虫随笔: import re import json def get_space_end(level): return ' ' * ...

  7. C#实例:datagridview单元格合并

    这是替C#微信交流群群友做的一个小实例,目的就是在datagridview选择对应行以后,点击button后获取对应行的ip,并执行相应的操作,其实我觉得这样的话button没必要非放置到datagr ...

  8. 1-SQL Server2019安装

    sql server2019安装 首先去官网下载(下载express版本): 打开安装程序 选择自定义 更改一下安装目录,点击安装 等待安装 等安装完成后,出现如下页面 选择SQL Server独立安 ...

  9. ldirectord

    试想,LVS作为前端负载均衡设备,当后端服务器宕机时,LVS还会把用户请求发送到该服务器上,这对用户体验来说是极其糟糕的,因为用户的请求无法得到处理.那么是否有一种机制,能保证后端服务器的是否正常?或 ...

  10. Java泛型中的细节

    Java泛型中的细节 如果没有泛型 学习Java,必不可少的一个过程就是需要掌握泛型.泛型起源于JDK1.5,为什么我们要使用泛型呢?泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一 ...