题目


分析

考虑离线处理,那么询问区间和就可以转换为四个询问,

CDQ分治按横坐标处理询问,树状数组维护前缀和就可以了


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
const int N=2000011,M=200011;
struct rec{int x,X,Y;}q[M],Q[M];
int c[N],n,ans[M],CNT,TOT;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline void add(int x,int y){for (;x<=n;x+=-x&x) c[x]+=y;}
inline signed query(int x){rr int ans=0; for (;x;x-=-x&x) ans+=c[x]; return ans;}
inline void CDQ(int l,int r){
if (l==r) return;
rr int mid=(l+r)>>1,i=l,j=mid+1,Cnt=0;
CDQ(l,mid),CDQ(mid+1,r);
for (;j<=r;++j){
for (;i<=mid&&q[i].X<=q[j].X;++i){
if (q[i].x>1e4) add(q[i].Y,q[i].x-1e4);
Q[++Cnt]=q[i];
}
if (q[j].x<=1e4){
if (q[j].x<0) ans[-q[j].x]-=query(q[j].Y);
else ans[q[j].x]+=query(q[j].Y);
}
Q[++Cnt]=q[j];
}
for (rr int I=l;I<i;++I)
if (q[I].x>1e4)
add(q[I].Y,1e4-q[I].x);
for (rr int I=i;I<=mid;++I) Q[++Cnt]=q[I];
for (rr int I=l;I<=r;++I) q[I]=Q[I-l+1];
}
signed main(){
iut(),n=iut();
for (rr int z=iut();z!=3;z=iut()){
if (z==1){
rr int x=iut(),y=iut(),w=iut();
q[++CNT]=(rec){w+1e4,x,y};
}else{
rr int lx=iut(),ly=iut(),rx=iut(),ry=iut();
++TOT,q[++CNT]=(rec){TOT,rx,ry};
if (lx>1&&ly>1) q[++CNT]=(rec){TOT,lx-1,ly-1};
if (lx>1) q[++CNT]=(rec){-TOT,lx-1,ry};
if (ly>1) q[++CNT]=(rec){-TOT,rx,ly-1};
}
}
CDQ(1,CNT);
for (rr int i=1;i<=TOT;++i)
print(ans[i]),putchar(10);
return 0;
}

#树状数组,CDQ分治#洛谷 4390 [BOI2007]Mokia 摩基亚的更多相关文章

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

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

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

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

  3. 二维树状数组总结&&【洛谷P4514】 上帝造题的七分钟

    P4514 上帝造题的七分钟 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了00的n×mn×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b)(a,b),右下 ...

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

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

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

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

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

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

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

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

  8. 2019南昌网络赛-I. Yukino With Subinterval 线段树套树状数组,CDQ分治

    TMD...这题卡内存卡的真优秀... 所以以后还是别用主席树的写法...不然怎么死的都不知道... 树套树中,主席树方法开权值线段树...会造成空间的浪费...这道题内存卡的很紧... 由于树套树已 ...

  9. Luogu P4390 [BOI2007]Mokia 摩基亚 | CDQ分治

    题目链接 $CDQ$分治. 考虑此时在区间$[l,r]$中,要计算$[l,mid]$中的操作对$[mid+1,r]$中的询问的影响. 计算时,排序加上树状数组即可. 然后再递归处理$[l,mid]$和 ...

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

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

随机推荐

  1. 谷歌浏览器vue.js devtools插件安装

    github官网 https://github.com/vuejs/vue-devtools#vue-devtools 插件安装地址(需FQ) https://chrome.google.com/we ...

  2. 使用beyond compare或kompare作为git的对比、合并工具

    两种方法 方法1: 直接使用命令 # 执行下面命令,参看支持对比合并工具名称,比如bc就是指beyond compare(收费软件,推荐使用开源的kompare) $ git difftool --t ...

  3. SpringCloud Nacos

    1.Nacos简介 SpringCloud Alibaba 由来: 因为原先Spring Cloud 的许多组件都是对Netflix 公司的各种框架进行封装, 然后因为Netflix公司对后续更新的各 ...

  4. 从 HPC 到 AI:探索文件系统的发展及性能评估

    随着 AI 技术的迅速发展,模型规模和复杂度以及待处理数据量都在急剧上升,这些趋势使得高性能计算(HPC)变得越来越必要.HPC 通过集成强大的计算资源,比如 GPU 和 CPU 集群,提供了处理和分 ...

  5. 详解Python魔法函数,__init__,__str__,__del__

    1.简介 Python作为一门灵活而强大的编程语言,提供了许多特殊的方法,被称为魔法函数(Magic methods).这些魔法函数以双下划线开头和结尾,能够让我们自定义类的行为,使得Python更加 ...

  6.  liunx上安装django ,启动uwsgi ,语音播报python实现过程

    由于需要做一个语音播报实现,用到的技术是python  ,需要事先搭环境,安装uwsgi  djagno环境,以下内容为百度上找到的好一点的内容,确实照着做成功了,转载一下,下次更好找资料 liunx ...

  7. STM32标准库通用定时器输入捕获

    STM32标准库定时器输入捕获 1.输入捕获介绍 输入捕获为STM32定时器的一个功能,可以用来测量输入信号的频率和占空比. 具体原理:当输入信号经过比较捕获通道时,STM32会依据通道的极性设置决定 ...

  8. Java解析JSON数据,有回车符\n时解析报错

    一.问题由来 测试人员最近在测试时,后台日志一直抱错,大致意思是JSON数据解析错误,错误信息如下: 二.问题分析 去查看代码时,发现异常信息是这里抛出来的,解析时使用的是json-lib这个包中的方 ...

  9. mainWindow = new BrowserWindow 打开慢的原因 electron 已解决 Windows Defender 拦截导致

    Windows Defender 导致拦截 不是变量的事儿 解决方案: win10 开始 设置 - windows 安全中心 - 病毒和威胁防护 - 病毒和威胁防护设置 - 排除项 - 添加排除项 将 ...

  10. 基于ADS1299的可穿戴设备调试之接口含义简析

    前言    几个项目都用到了ADS1299,没想到中间会出那么多的问题.在解决问题的时候,这里面暴露了团队的不少不足之处.看来做技术,还是需要不断地积累.思维不能留盲点啊.要经常总结,做笔记.   接 ...