P4390 [BOI2007]Mokia 摩基亚 题目描述 摩尔瓦多的移动电话公司摩基亚(\(Mokia\))设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户\(C\)的位置在哪?"的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如"给定区域内有多少名用户?"的问题. 在定位系统中,世界被认为是一个\(W\times W\)的正方形区域,由\(1\times1\)的方格组成.每个方格都有一个坐标\((x,y)\),\(1\le…
题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户C的位置在哪?"的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如"给定区域内有多少名用户?"的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4×4的正方形,就有1<=x<=4,1<=y&…
题目链接 $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,…
题目大意: 维护一个W*W的矩阵,每次操作可以增加某格子的权值,或询问某子矩阵的总权值. 题解:CDQ分治,把询问拆成四个小矩形 卡点:无 C++ Code: #include <cstdio> #include <algorithm> #define int long long #define lb(x) (x & -x) using namespace std; struct node { int op, id, x, y, num; }q[200010], tmp[2…
传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,ya-1$ 的点数,再加上小于等于 $xa-1,ya-1$ 的点数 就变成求二维前缀和的问题了 然后再加上时间维,发现其实就是对每个询问,求时间更早的,横纵坐标都小于询问点的点的数量 变成裸的三维偏序问题了, $CDQ$ 分治就行 注意 $long\ long$ #include<iostream>…
一样是cdq的板子 照着园丁的烦恼就好了 代码 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int w,cntq,cnta,nothing,type,qid,aid; namespace BIT{ int bit[2000100]; int lowbit(int x){ return x&(-x); } void add(int pos,int x)…
[BZOJ1176][BOI2007]Mokia 摩基亚 题面 bzoj 洛谷 题解 显然的\(CDQ\)\(/\)树套树题 然而根本不想写树套树,那就用\(CDQ\)吧... 考虑到点\((x1,y1)\)和\((x2,y2)\)区域内既有上限又有下限我们不是很好算 于是将这个区域的贡献写成另外一种形式, 记\((x,y)\)与\((0,0)\)之间区域的贡献为\(S_{(x,y)}\),则上面的贡献可表示为 \(S_{(x2,y2)}-S_{(x2,y1-1)}-S_{(y2,x1-1)}+…
[题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4×4的正方形,就有1<=x<=4,1<=y<=4(如图): 请帮助Moki…
Description: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户C的位置在哪?"的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如"给定区域内有多少名用户?"的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4×4的正方形,就有1<=x<=4,…
Description 给你一个 \(W~\times~W\) 的矩阵,每个点有权值,每次进行单点修改或者求某子矩阵内权值和,允许离线 Input 第一行是两个数字 \(0\) 和矩阵大小 \(W\) 下面每行可能会出现如下参数 \(1,x,y,A\) 单点修改格子 \(x,y\) 为 \(A\) \(2,x_1,y_1,x_2,y_2\) 查询给定矩阵的权值和 \(3\) 结束查询与修改 Output 对每个查询给出一行作为答案 Hint \(1~\leq~W~\leq~2000000\) 修…
upd:\((x1,y1)(x2,y2)\)表示以\((x1,y1)\)为左上端点 \((x2,y2)\)为右下端点的矩形 本来以为是一道二位树状数组的模板,但是看数据范围之后就放弃了,边界既然到了2000000,那么我们只能使用其他办法来代替树状数组 于是,CDQ分治就诞生了! 此题我们可以把问题转化成cdq分治模板 回忆一下二位树状数组是怎么求二维区间查询的:对于区间[x1,y1][x2,y2],我们把它转化成$ (1,1)(x1-1,y1-1)+(1,1)(x2,y2)-(1,1)(x1-…
luogu 题意 支持平面内单点加一个值以及矩阵求和. 平面大小\(W\le2*10^6\),修改操作\(\le1.6*10^5\),查询操作\(\le10^4\) sol \(CDQ\)写一发. 把一个询问拆成四个点,类似二维前缀和的形式.这样对于每一个询问,相当于就是问满足\(x_i\le X,y_i\le Y\)的权值和. 树状数组维护即可. code #include<cstdio> #include<algorithm> using namespace std; int…
题目链接:[https://www.luogu.com.cn/problem/P4390] 快捷版题意: 维护一个\(W*W\)的矩阵,初始值均为\(S\).每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数\(M<=160000\),询问数\(Q<=10000,W<=2000000.\) 思路: 第一反应二维树状数组,然而看到\(W<=2000000\)便望而却步. 想到今天在练\(cdq\)分治,于是往这个方向靠. 首先,容易想到子矩阵总权值可拆分为四个前缀子矩阵…
题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4×4的正方形,就有1<=x<=4,1<=y<=4(如图): 请帮助Mok…
[题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W*W的正方形区域,由1*1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4*4的正方形,就有1<=x<=4,1<=y<=4(如图): 请帮助Moki…
题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4×4的正方形,就有1<=x<=4,1<=y<=4(如图): 请帮助Mokia公…
1752. [BOI2007]摩基亚Mokia ★★☆   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每…
1752. [BOI2007]摩基亚Mokia ★★★   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W*W的正方形区域,由1*1的方格组成.每…
照例先上题面 1752. [BOI2007]摩基亚Mokia 输入文件:mokia.in   输出文件:mokia.out 时间限制:1.5 s   内存限制:128 MB [题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户C的位置在哪?"的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如"给定区域内有多少名用户?"的问题. 在定位系统中,世界被认为是一个W×W的正方形区域…
题目 Cogs 没有Bzoj的权限号 Sol 离线,\(CDQ\)分治,把询问拆成\(4\)个,变成每次求二位前缀和 那么只要一个修改操作(关键字为时间,\(x\),\(y\))都在这个询问前,就可以累计答案 那么就成了偏序问题了,直接\(CDQ\) 注意当\(x\)相等时要把修改丢在前面 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, size…
http://cogs.pro/cogs/problem/problem.php?pid=1752 (题目链接) 题意 给出$n*n$的棋盘,单点修改,矩阵查询. Solution 离线以后CDQ分治.每一层按照$Y$排序,然后询问用前缀和拆成$4$个,树状数组维护一下就可以了. 细节 ? 代码 // cogs1752 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring…
题目:洛谷P4390.BZOJ1176. 题目大意: 给你一个\(W\times W\)的矩阵,初始每个数都为\(S\).现在有若干操作: 1. 给某个格子加上一个值:2. 询问某个子矩阵的值的和:3. 结束询问 解题思路: CDQ分治. 离线操作,把询问拆成4个矩阵(二维前缀和). 对\(x\)轴排序,分治询问,用左区间的修改来更新右区间的询问.由于\(x\)已被排序,我们直接用树状数组维护\(y\)的前缀和即可. 也可以边CDQ边归并排序. 时间复杂度\(O(n\log^2 n)\). C+…
CDQ的板子题 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define MAXN 2000010 using namespace std; inline int read() { ; char ch=getchar(); ')ch=getchar(); ') { sum=(sum<<)+(sum<<)+ch-'; ch=getc…
\(CDQ\)分治小结 标签:知识点总结 阅读体验:https://zybuluo.com/Junlier/note/1326395 身为一个资深菜鸡 \(CDQ\)分治一开始学了一晚上,后来某一天又复习了一晚上(和重新学一样...) 现如今才发现自己还有这个坑没有填...于是来填坑了... 简介定义 \(CDQ\)就是对于问题一层一层分治达到可做状态(懵逼吧) 正儿八经地讲 PS:以下面题目里的三维偏序洛谷模板为准... 都做过二维偏序吧... 有一种做法是第一维排序,第二维树状数组查询前缀和…
游荡的孤高灵魂不需要羁绊之处. 洛谷题单 点分治 前置芝士 树的重心 树分治 例题略解 P3806 [模板]点分治1 板子题,先暴力找到整棵树的重心,然后先求出重心到各点的距离,进而算出他所在树的各个节点的距离,在对应的ans数组加一;然后再接着扫子节点,并把儿子节点子树的贡献减去,最后回答询问. 然后我们愉快的\(TLE60pts\),题目上也有说明,这种做法使用于大部分不过本体比较卡时间,储存然后离线剪枝就好了. 这里给出\(60pts\)的\(code\) P2634 [国家集训队]聪聪可…
A.\(CDQ\) 分治 特别基础的教程略. \(CDQ\)分治的优缺点: ( 1 )优点:代码量少,常数极小,可以降低处理维数. ( 2 )缺点:必须离线处理. \(CDQ\)分治与其他分治最本质的不同在于: 分治到达\([L,R]\)时,分治处理\([L,mid]\)与\([mid+1,R]\) 然后递归上来合并的时候: 只考虑 [L,mid]中元素 对 [mid+1,R] 中元素的影响 看起来这句话非常简单,但只要正真理解了这句话,也就理解了\(CDQ\)分治. 只要是满足这个原则的分治,…
题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题. 在定位系统中,世界被认为是一个W×W的正方形区域,由1×1的方格组成.每个方格都有一个坐标(x,y),1<=x,y<=W.坐标的编号从1开始.对于一个4×4的正方形,就有1<=x<=4,1<=y<=4(如图): 请帮助Mokia公…
目录 二维数据结构->cdq 预备知识 T1: 二维树状数组 T2:cdq分治 bzoj1176 mokia:Debug心得 一类特殊的CDQ分治 附: bzoj mokia AC代码 二维数据结构->cdq 预备知识 偏序关系 link1 数据结构 link1, 进阶指南P212 杂烩 link1 T1: 二维树状数组 hdu1892 一维树状数组: 二进制分段思想 可以把\(m = 2^a+2^b+\cdots(a>b>\cdots)\) 分解成\((0, 2^a], (2^a…
喜闻乐见的CDQ分治被我搞的又WA又T..... 大致思路是这样的:把询问用二维前缀和的思想拆成4个子询问.然后施CDQ大法即可. 我却灵光一闪:树状数组是可以求区间和的,那么我们只拆成两个子询问不就行了?在统计的时候统计一个差值即可. 然后一交,自信40... 那么果然还是拆成4个吧...T了,60分. 然后放弃那个朴素的sort版CDQ,采用了归并,就A了. #include <cstdio> #include <algorithm> using namespace std;…
1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 821[Submit][Status][Discuss] Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Input 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小…