当前位置: 首页 > news >正文

[BZOJ] 3262: 陌上花开

CDQ分治

大排序降一维,分治降一维,权值树状数组解决一维。

#include<algorithm>
#include<iostream>
#include<cstdio>

using namespace std;

inline int rd(){
    int ret=0,f=1;char c;
    while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
    while(isdigit(c))ret=ret*10+c-'0',c=getchar();
    return ret*f;
}

const int MAXN=500005;

struct Node{
    int x,y,z;
    int w,f;
    bool operator<(const Node &r)const{
        return (x==r.x&&y==r.y)?z<r.z:(x==r.x)?y<r.y:x<r.x;
    }
}a[MAXN],tmp[MAXN];

int n,m;

int t[MAXN];
inline void update(int x,int w){
    for(;x<=m;x+=x&-x)t[x]+=w;
}
inline int query(int x){
    int ret=0;
    for(;x;x-=x&-x)ret+=t[x];
    return ret;
}

void cdq(int l,int r){
    if(l==r) return;
    int mid=(l+r)>>1;
    cdq(l,mid);cdq(mid+1,r);
    int i=l,j=mid+1,p=l;
    while(i<=mid||j<=r){
        if(j>r||(i<=mid&&a[i].y<=a[j].y)) update(a[i].z,a[i].w),tmp[p++]=a[i++];
        else a[j].f+=query(a[j].z),tmp[p++]=a[j++];
    }
    for(i=l;i<=mid;i++) update(a[i].z,-a[i].w);
    for(i=l;i<=r;i++) a[i]=tmp[i];
}

int ans[MAXN];

int main(){
    n=rd();m=rd();
    for(int i=1;i<=n;i++){
        a[i].x=rd();a[i].y=rd();a[i].z=rd();
        a[i].w=1;a[i].f=0;
    }
    sort(a+1,a+1+n);
    int tot=1;
    for(int i=2;i<=n;i++){
        if(a[i].x==a[tot].x&&a[i].y==a[tot].y&&a[i].z==a[tot].z) a[tot].w++;
        else a[++tot]=a[i];
    }
    int sav=n;n=tot;
    cdq(1,tot);
    for(int i=1;i<=n;i++){
        ans[a[i].f+a[i].w]+=a[i].w;
    }
    for(int i=1;i<=sav;i++) printf("%d\n",ans[i]);
    return 0;
}

 

转载于:https://www.cnblogs.com/ghostcai/p/9507894.html

相关文章:

  • p6spy 显示完整可执行的SQL
  • Django 模板之组件、静态文件导入
  • 购物车程序
  • 【独立开发】从点子到创收
  • web项目中使用流程引擎
  • RESTful实践(具体应用)思考
  • 科幻作家眼中的人工智能:情感和自我意识不可或缺
  • 【前端学习】-粗谈选择器
  • powermock单元测试
  • 9月20日学习内容整理:封装,私有属性方法,用装饰器描述的方法
  • 车联网上云最佳实践(三)
  • Codeforces Round #435 (Div. 2)
  • 机器学习概述
  • 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox
  • 从重复到重用
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Angular4 模板式表单用法以及验证
  • CSS 专业技巧
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java读取Properties文件的六种方法
  • Nacos系列:Nacos的Java SDK使用
  • oldjun 检测网站的经验
  • Spring Boot MyBatis配置多种数据库
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 分布式事物理论与实践
  • 工作中总结前端开发流程--vue项目
  • 基于 Babel 的 npm 包最小化设置
  • 前端_面试
  • 如何设计一个微型分布式架构?
  • 深度学习在携程攻略社区的应用
  • 使用 5W1H 写出高可读的 Git Commit Message
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.ajax()参数及用法
  • $refs 、$nextTic、动态组件、name的使用
  • (0)Nginx 功能特性
  • (1)bark-ml
  • (2)(2.10) LTM telemetry
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (六)Hibernate的二级缓存
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (万字长文)Spring的核心知识尽揽其中
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net 代码性能 - (1)
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net6使用WebSocket与前端进行通信
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数