CF1045G

Posted gaojunonly1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1045G相关的知识,希望对你有一定的参考价值。

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
",re);
}

以上是关于CF1045G的主要内容,如果未能解决你的问题,请参考以下文章

如何从后台弹出片段

cf 模拟

CF1435 游记

无法解析符号 c882c94be45fff9d16a1cf845fc16ec5

本人想学习破解技术但是看不懂反汇编代码!求助!!

微信小程序代码片段