题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3262

第一道CDQ分治题!

看博客:https://www.cnblogs.com/Narh/p/9230515.html

CDQ分治意外地很好写啊,而且好厉害!膜拜CDQ!

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const maxn=1e5+,maxm=2e5+;
int n,m,f[maxm],ans[maxn],tot;
struct N{int a,b,c,sum,num;}s[maxn],t[maxn];
bool cmp(N x,N y){return (x.a<y.a) || (x.a==y.a && x.b<y.b) || (x.a==y.a && x.b==y.b && x.c<y.c);}
bool cmp2(N x,N y){return x.b<y.b;}
bool ck(N x,N y){return (x.a==y.a) && (x.b==y.b) && (x.c==y.c);}
void add(int x,int v){for(;x<=m;x+=(x&-x))f[x]+=v;}// <=m 而非 <=n !
int query(int x){int ret=; for(;x;x-=(x&-x))ret+=f[x]; return ret;}
void cdq(int l,int r)
{
if(l==r)return;
int mid=((l+r)>>);
cdq(l,mid); cdq(mid+,r);
sort(t+l,t+mid+,cmp2); sort(t+mid+,t+r+,cmp2);
int p=l;
for(int i=mid+;i<=r;i++)
{
while(p<=mid && t[p].b<=t[i].b)add(t[p].c,t[p].num),p++;// <=
t[i].sum+=query(t[i].c);
}
for(int i=l;i<p;i++)add(t[i].c,-t[i].num);//撤销
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d%d%d",&s[i].a,&s[i].b,&s[i].c);
sort(s+,s+n+,cmp);
for(int i=,cnt;i<=n;i++)
{
cnt=;
while(ck(s[i],s[i+]))cnt++,i++;
t[++tot]=s[i]; t[tot].num=cnt;
}
cdq(,tot);
for(int i=;i<=tot;i++)ans[t[i].sum+t[i].num-]+=t[i].num;
for(int i=;i<n;i++)printf("%d\n",ans[i]);
return ;
}

bzoj3262 陌上花开——CDQ分治的更多相关文章

  1. bzoj3262陌上花开 cdq分治

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2794  Solved: 1250[Submit][Status][Discus ...

  2. bzoj3262陌上花开 cdq分治入门题

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...

  3. bzoj3262: 陌上花开(cdq分治+树状数组)

    3262: 陌上花开 题目:传送门 题解: %%%cdq分治 很强大的一个暴力...感觉比分块高级多了 这道题目就是一个十分经典的三维偏序的例题: 一维直接暴力排序x 二维用csq维护y 三维用树状数 ...

  4. bzoj3262 陌上花开 cdq分治(入门)

    题目传送门 思路:cdq分治处理偏序关系的模板题,主要就是学cdq分治吧,还在入门中. 代码其实也很好理解,记得树状数组操作的上限是 z的最大值,不是n的最大值,这个细节wa了好久. #include ...

  5. 【学术篇】bzoj3262 陌上花开. cdq分治入门

    花儿们已经很累了-- 无论是花形.颜色.还是气味, 都不是为了给人们摆出来欣赏的, 更不是为了当做出题的素材的, 她们并不想自己这些属性被没有生命的数字量化, 并不想和其它的花攀比, 并无意分出个三六 ...

  6. BZOJ3262:陌上花开(CDQ分治)

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美 ...

  7. [Bzoj3262]陌上花开(CDQ分治&&树状数组||树套树)

    题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 #include<bits/stdc++.h> using nam ...

  8. P3810 陌上花开 CDQ分治

    陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...

  9. 【BZOJ3262】陌上花开 cdq分治

    [BZOJ3262]陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义 ...

随机推荐

  1. 运维笔记:zabbix的运用(1)安装过程

    前言 如果是用了阿里云或者腾讯云,他们都有各种监控帮我们做好.但是如果是遇到了自己维护自己机房的服务器,那么一些可视化或者监控就很有意义了.监控可能有很多种方案,这里就以比较老牌通吃的zabbix来解 ...

  2. mysql常用命令用法

    Mysql帮助文档地址:http://dev.mysql.com/doc/ 1.创建数据库: create database database_name; 2.选择数据库: use database_ ...

  3. About SQL Server 2014 SP1

    其实补丁这个月初就放出,个人懒惰所以也没怎么写归整文档 官方Blog: http://blogs.technet.com/b/dataplatforminsider/archive/2015/05/1 ...

  4. SpringBoot入门系列~Spring-Data-JPA自动建表

    1.pom.xml引入Spring-Data-Jpa和mysql依赖 <!-- Spring-data-jpa依赖 --> <dependency> <groupId&g ...

  5. Toast自定义

    Toast toast=new Toast(MainActivity.this); toast.setView(getLayoutInflater().inflate(R.layout.toast,n ...

  6. 从零开始写STL—栈和队列

    从零开始写STL-栈和队列 适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 主要解决:主要解决在软件系统中,常常要将 ...

  7. HDU——2647 Reward

    Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. JVM(一):源文件的转变

    JVM(一):源文件的转变 本文讲述一个.java源文件是如何经过javac编译器的一系列操作变为.class文件的. 编译 说到编译,大家都能想到是编译器经过一系列方法将源代码转变为目标机器代码,但 ...

  9. 02-js变量学习

    <html> <head> <title>js的变量学习</title> <meta charset="UTF-8"/> ...

  10. Servlet CDI 例子分析

    @WebServlet("/cdiservlet") //以@WebServlet注释开头,注释指定相对于上下文根的URL模式,即在根目录下使用/cdiservlet来访问 pub ...