CF1045G

看了下题解,动态开点线段树,好像挺难的

#include <map>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=100005,M=5000005,inf=1e9;
int n,k,tot=0;
map<int,int>mp;
struct node{int x,r,q;}a[N];
inline bool cmp(node a,node b){return a.r>b.r;}
struct segtree{int l,r,sum;}Tree[M];
inline int que(int x,int l,int r,int xx,int yy)
{
if(!x)return 0; if(xx<=l&&r<=yy)return Tree[x].sum; int mid=(l+r)>>1,re=0;
if(xx<=mid)re+=que(Tree[x].l,l,mid,xx,yy);
if(yy>mid)re+=que(Tree[x].r,mid+1,r,xx,yy); return re;
}
inline void ins(int po,int l,int r,int &x)
{
if(!x) x=++tot; Tree[x].sum++; if(l==r)return; int mid=(l+r)>>1;
if(po<=mid)ins(po,l,mid,Tree[x].l);else ins(po,mid+1,r,Tree[x].r);
}
int main()
{
int i,j;long long re=0; scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d%d%d",&a[i].x,&a[i].r,&a[i].q);
}sort(a+1,a+n+1,cmp);
for(i=1;i<=n;i++)
{
for(j=a[i].q-k;j<=a[i].q+k;j++)
{
re+=(long long)que(mp[j],-inf,inf,a[i].x-a[i].r,a[i].x+a[i].r);
}ins(a[i].x,-inf,inf,mp[a[i].q]);
}printf("%lld\n",re);
}

CF1045G的更多相关文章

  1. CF1045G AI robots

    CF1045G AI robots 题目大意就不说了 这道题可以用CDQ分治做 但是,如何选择CDQ分治的维度一直是CDQ分治的难点所在 这道题我们有三种选择 1.让智商高的数智商低的 2.让看的近的 ...

  2. CF1045G:AI robots(CDQ分治)

    Description 火星上有$n$个机器人排成一行,第$i$个机器人的位置为$x_i$,视野为$r_i​$,智商为$q_i​$.我们认为第$i$个机器人可以看到的位置是$[x_i−r_i,x_i+ ...

  3. CF1045G AI robots(动态开点线段树)

    题意 火星上有$N$个机器人排成一行,第$i$个机器人的位置为$x_{i}$,视野为$r_{i}$,智商为$q_{i}$.我们认为第$i$个机器人可以看到的位置是$[x_{i}-r_{i},x_{i} ...

  4. 线段树动态开点——cf1045G

    只计算半径小的能看到的半径大的,因为如果计算半径大的看到半径小的,虽然q在其范围内,但是小的不一定能看到大的 那么我们将机器人按照半径降序排序 遍历一次,去查询在[x-r,x+r]范围的,智商在[q- ...

随机推荐

  1. 【Codeforces Round 1114】Codeforces #538 (Div. 2)

    Codeforces Round 1114 这场比赛做了\(A\).\(C\).\(D\).\(E\),排名\(134\). \(B\)题做了很长时间,好不容易最后一分钟\(Pretest\ Pass ...

  2. C++ 函数模板&类模板

    函数模板 #include <iostream> #include <string> using namespace std; template <typename T& ...

  3. Sublime Text 3 Build 3143 可用License

    —– BEGIN LICENSE —–TwitterInc200 User LicenseEA7E-8900071D77F72E 390CDD93 4DCBA022 FAF6079061AA12C0 ...

  4. 洛谷 P1396 营救

    题目链接 https://www.luogu.org/problemnew/show/P1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪 ...

  5. Redis详解(七)------ AOF 持久化

    上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严 ...

  6. exec sp_spaceused如何只返回一个结果集(转载)

    问: 我想把每天数据库的大小自动保存到table中但是exec sp_spaceused是返回2个表,执行下面的语句出错,如何解决? drop table db_size go create tabl ...

  7. SQL Server CTE 递归查询全解(转载)

    在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...

  8. 最近找工作,有招JAVA开发的可以联系我,如果不嫌弃我2年前用C,也可以联系我

    java涉及到的技术工具:HSF.Pandora.Notify.Metaq.Diamond.Tddl.ScheduleX.精卫.Switch.BCP.Tair.Hbase.Mysql.Ads.Tlog ...

  9. DeskMini无传统机械键盘与鼠标接口的情况下使用U盘安装系统经验总结

    总结安装纯净版Win7旗舰版系统安装过程所解决的问题要点: 1:UEFI引导启动的实现. 2:使用Dism++实现系统的安装. 3:使用Dism++解决新主板在安装系统过程中不能使用USB键盘和鼠标的 ...

  10. 面试4——java进程和线程相关知识

    1.线程和进程的概念.并行和并发的概念