NC53370 Forsaken的三维数点】的更多相关文章

这个是一个简单题,不过因为想到比标程时间复杂度更低的方法就尝试了一下. 思路:虽然加点是三维数点,但是我们要求的是半径的大小,这样的话,就可以转变为一维的问题. 标程的解法是,用树状数组维护,然后二分答案,这样的话,时间复杂度就是O(n*logn*logn). 但是,可以建立权值线段树,在树上跑的时候,就可以二分出答案了. 如果左节点的个数不够的话,那么肯定要跑到右节点,这样不断二分,最终的边界就是我们要求的答案了,复杂度为 O(nlogn). 之所以能想到是因为之前有过类似题 ——> 传送门.…
思路: 这是一道树状数组和二分的题,用线段树空间直接爆,时间也会超 然后这道题我犯了一个很低级的错误,导致我wa了十发左右,一个int型变量用lld输入,然后他给的提示是运行错误,我哭了,我一直以为是是空间爆了 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; #define lowbit(x) x&(-x) ll x,y,z,mx,cnt; const int maxn = 2e5; ll t…
为了便于考虑,把删除反序变为增加 于是就变成关于权值和位置和时间的三维数点 一波cdq一波树状数组教做人 (神TM需要longlong,80了一发) #include <bits/stdc++.h> #define mid (l+r>>1) #define ll long long using namespace std; ll n,ret,m,tem; ll tr[],a[],]; ]; struct qu { ll num,pos,id,ans; } q[],t[]; bool…
大早上的做了一道三维数点一道五位数点,神清气爽! 先给一维排序,变成一个奇怪的动态的二维数点(相当于有一个扫描面扫过去,导致一系列的加点和询问) 然后cdq分治,再变回静态,考虑前半段对后半段的影响 这时对第二维排序,又变成动态一维数点 树状数组屠之 (不妨再cdq一次变成零维数点,也就是询问一个询问之前有几次修改)(手动滑稽) 另外因为x y z都相同时互相产生影响,特判掉 来上个又臭又长的代码 #include <bits/stdc++.h> using namespace std; st…
int n, k, tot; struct _ {int x,r,f;} a[N]; struct __ { int type; ll x,y; bool operator < (const __ & rhs) const { if (x!=rhs.x) return x<rhs.x; if (y!=rhs.y) return y<rhs.y; return type<rhs.type; } } e[N]; ll ans, b[N]; int c[N]; inline vo…
因为问题的对称性,只需要考虑求出有多少点离$A$更近即可. 枚举$4$个绝对值的正负号,可以解出坐标范围. 若可以转化为二维数点,则可以统一扫描线+树状数组解决. 否则是三维数点,按一维排序,剩下两维维护KD-Tree即可. 时间复杂度$O(n\sqrt{n})$. #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int N=100010; int W,H,n…
Description: 三维数点 Solution: 第一道cdq分治...感觉还是很显然的虽然题目不能再傻逼了... Code: /*================================= # Created time: 2016-04-20 10:00 # Filename: hdu5618.cpp # Description: =================================*/ #define me AcrossTheSky&HalfSummer11 #i…
大意: n个机器人, 位置$x_i$, 可以看到$[x_i-r_i,x_i+r_i]$, 智商$q_i$, 求智商差不超过$k$且能互相看到的机器人对数. 这个题挺好的, 关键是要求互相看到这个条件, 直接求的话是个四维数点问题, 但是可以发现按照$r$排序后, $r$小的能看到的一定能互相看到, 所以就是一个简单的三维数点了. #include <iostream> #include <iostream> #include <algorithm> #include &…
第18回 日本情報オリンピック 春合宿 オンラインコンテスト (JOISC2019) 官网 Day 1 試験 (Examination) description 有\(N\)个学生,每个学生有两科成绩\(S_i,T_i\).定义一个学生合格当且仅当他的第一科成绩\(\ge A\),第二科成绩\(\ge B\)且总成绩\(\ge C\).给出\(Q\)组\((A_i,B_i,C_i)\),问每组限制要求下有多少学生合格. \(N,Q\le10^5\) solution 裸的三维数点?\(CDQ\)…
题意 题目链接 Sol 为什么一堆分块呀..三维数点不应该是套路离线/可持久化+树套树么.. 亲测树状数组套权值线段树可过 复杂度\(O(nlog^2n)\),空间\(O(nlogn)\)(离线) #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se second #define Fin(x) {freopen(…