BZOJ3262

  • 模板题,三位偏序。
  • 注意第一维排完序之后再给二三维排序的时候还是要考虑下第一维的:如果二三维都相等的话第一维小的要在前面
  • 代码:
     #include <bits/stdc++.h>
    #define nmax 1000100
    #define lowbit(x) x&(-x) using namespace std;
    struct point{
    int x,y,z;
    bool operator == (const point& c) const { return (c.x==x)&&(c.y==y)&&(c.z==z); }
    };
    point in[nmax],a[nmax];
    int n,k;
    int p[nmax],c[nmax]={},v[nmax]={},an[nmax]={},fa[nmax]={}; bool cmp1(point c,point b){
    if(c.x==b.x) return (c.y==b.y)?(c.z<b.z):(c.y<b.y);
    else return c.x<b.x;
    } bool cmp2(int b,int c){
    if(a[b].y==a[c].y) return (a[b].z==a[c].z)?(a[b].x<a[c].x):(a[b].z<a[c].z);
    return a[b].y<a[c].y; //第二次排序的时候也是要考虑a的
    } inline void addv(int x,int t){
    while(x<=k){ c[x]+=t; x+=lowbit(x); }
    } inline int f(int x){
    int ans=;
    while(x>) { ans+=c[x]; x-=lowbit(x); }
    return ans;
    } void solve(int l,int r){
    if(l==r) { an[l]+=(v[l]-); return; }
    int ans=,mid=(l+r)/;
    for (int i=l; i<=r; i++) p[i]=i;
    sort(p+l,p+r+,cmp2);
    for (int i=l; i<=r; i++) {
    int id=p[i];
    if(id<=mid) addv(a[id].z,v[id]); //在左边
    else {
    an[id]+=f(a[id].z); //在右边
    // printf("now an[%d]=%d \n",id,an[id]);
    }
    }
    //清空树状数组
    for (int i=l; i<=r; i++) {
    int id=p[i];
    if(id<=mid) addv(a[id].z,(-)*v[id]);
    }
    solve(l,mid);
    solve(mid+,r);
    } int main(){
    scanf("%d%d",&n,&k);
    for (int i=; i<=n; i++) scanf("%d%d%d",&in[i].x,&in[i].y,&in[i].z);
    sort(in+,in+n+,cmp1);
    //去重
    int cnt=,i=,j=;
    while (i<=n){
    a[++cnt]=in[i];
    v[cnt]=;
    while(in[i]==in[j]) { j++; v[cnt]++; }
    i=j; j++;
    }
    //去重 over 要处理的数组是a
    solve(,cnt);
    for (int i=; i<=cnt; i++) fa[an[i]]+=v[i];
    for (int i=; i<n; i++) printf("%d\n",fa[i]);
    return ;
    }

    030

打铁选手的 CDQ分治 刷题记录的更多相关文章

  1. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  2. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  3. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  4. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  5. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  6. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  7. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

  8. 刷题记录:[DDCTF 2019]homebrew event loop

    目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...

  9. 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System

    目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ...

随机推荐

  1. Java的引用类型的内存分析

    一. jdk的内存:jdk的bin目录常见命令 1. javac.exe:编译java源代码的,生成java字节码文件(*.class) 2. java.exe:启动一个jvm,来运行指定class字 ...

  2. Vue中的递归组件

    递归函数我们都再熟悉不过了,也就是函数自己调用自己.递归组件也是类似的,在组件的template内部使用组件自身.那递归组件有什么使用场景呢? 我们都知道树这个数据结构就是一种递归的结构,因此我们可以 ...

  3. 一篇文章带你搞定 ElasticSearch 术语

    这篇文章主要介绍 ElasticSearch 的基本概念,学习文档.索引.集群.节点.分片等概念,同时会将 ElasticSearch 和关系型数据库做简单的类比,还会简单介绍 REST API 的使 ...

  4. C#设计模式学习笔记:(19)策略模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8057654.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第七个模式--策 ...

  5. 小程序封装request请求

    //request.js var host = 'https://www.xxx.com';//请求域名 module.exports = function (type, params, method ...

  6. 2python脚本在window编辑后linux不能执行的问题

    参考简书博主天道酬勤abcd python脚本在windows编辑后,在linux下执行提示 /usr/bin/python^M: bad interpreter: No such file or d ...

  7. java读取中文文本文件乱码问题

    今天遇到的问题是这样:用java读取一个中文文本文件,但读取到的却是乱码,之前一直没有问题,查清楚后,原来是因为今天是用的windows的记事本来编辑的文件,因编码方式是的不同而导致了乱码,解决方法就 ...

  8. windows10禁止更新

    1. WIN10 禁止自动更新 转载于https://jingyan.baidu.com/article/1e5468f94dc9a3484961b7a8.html 方法一:(注册表方式关闭) 在co ...

  9. 剑指offer-面试题61-扑克牌中的顺子-数组

    /* 题目: 从扑克牌中随机抽取n个数字,判断他们是否连续,扑克牌从A~K,大小王可代替任意数字. */ #include<iostream> #include<cstdlib> ...

  10. [Git:commit错误] Fatal: cannot do a partial commit during a merge

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 问题场景 今天进行Spring Boot版本升级,解决冲突后进行代码文件提交时出现这个错误. 上午 ...