【CJOJ2433】陌上花开 CDQ呲嘚秋分治

WA果然呲嘚秋分治跑得比树套树还快!!!(md理论复杂度不是一样的吗)

但树套树不知道比呲嘚秋高到哪里去辣装X用

Orz hzwer



第一维sort,第二维cdq归并,第三位BIT维护。。。

不要在意结构体名称

// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
il int gi(){
rg int x=0;rg bool flg=0;rg char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')flg=1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return flg?-x:x;
}
const int maxn=1e5+2,maxk=2e5+2;
struct frog{int knowledge,f,g,ans,tot;};
il bool operator ==(const frog&a,const frog&b){return a.knowledge==b.knowledge&&a.g==b.g&&a.f==b.f;}
il bool cmp(const frog&a,const frog&b){
if(a.knowledge^b.knowledge)return a.knowledge<b.knowledge;
if(a.f^b.f)return a.f<b.f;
return a.g<b.g;
}
il bool mmp(const frog&a,const frog&b){
if(a.tot==-1)return 0;if(b.tot==-1)return 1;
return cmp(a,b);
}
frog f[maxn],tmp[maxn];
int n,k;
namespace bit{
int t[maxk];
#define lb(o) ((o)&-(o))
il vd add(int p,int num){while(p<=k)t[p]+=num,p+=lb(p);}
il int sum(int p){static int ret;ret=0;while(p)ret+=t[p],p-=lb(p);return ret;}
#undef lb
}
namespace STO_CDQ_OTZ{
#define mid ((l+r)>>1)
il vd merge(int __l,int __r,int l,int r,int L,int R){
int tot=__l;
while((l^L)&&(r^R))
if(f[l].f<=f[r].f)bit::add(f[l].g,f[l].tot),tmp[tot++]=f[l++];
else f[r].ans+=bit::sum(f[r].g),tmp[tot++]=f[r++];
while(l^L)bit::add(f[l].g,f[l].tot),tmp[tot++]=f[l++];
while(r^R)f[r].ans+=bit::sum(f[r].g),tmp[tot++]=f[r++];
l=__l;while(l^L)bit::add(f[l].g,-f[l].tot),++l;
rep(i,__l,__r)f[i]=tmp[i];
}
il vd cdq(int l,int r){
if(l==r)return;
cdq(l,mid),cdq(mid+1,r);
merge(l,r,l,mid+1,mid+1,r+1);
}
#undef mid
}
int ans[maxn];
int main(){
n=gi(),k=gi();
rep(i,1,n)f[i].knowledge=gi(),f[i].f=gi(),f[i].g=gi(),f[i].ans=0,f[i].tot=1;
sort(f+1,f+n+1,cmp);
int N=n,nnnn=n;
rep(i,1,n)if(f[i]==f[i-1])f[i].tot=f[i-1].tot+1,f[i-1].tot=-1,--N;
sort(f+1,f+n+1,mmp),n=N;
STO_CDQ_OTZ::cdq(1,n);
rep(i,1,n)ans[f[i].ans+f[i].tot-1]+=f[i].tot;
rep(i,1,nnnn)printf("%d\n",ans[i-1]);
return 0;
}

【CJOJ2433】陌上花开 CDQ分治的更多相关文章

  1. P3810 陌上花开 CDQ分治

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

  2. 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1439  Solved: 648[Submit][Status][Discuss ...

  3. bzoj3262陌上花开 cdq分治

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

  4. 洛谷P3810 陌上花开 CDQ分治(三维偏序)

    好,这是一道三维偏序的模板题 当然没那么简单..... 首先谴责洛谷一下:可怜的陌上花开的题面被无情的消灭了: 这么好听的名字#(滑稽) 那么我们看了题面后就发现:这就是一个三维偏序.只不过ans不加 ...

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

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

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

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

  7. BZOJ 3262: 陌上花开 [CDQ分治 三维偏序]

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

  8. bzoj 3262 陌上花开 - CDQ分治 - 树状数组

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

  9. 陌上花开——CDQ分治

    传送门 “CDQ分治”从来都没有听说过,写了这题才知道还有这么神奇的算法. (被逼无奈).w(゚Д゚)w 于是看了不少dalao的博客,对CDQ算法粗浅地了解了一点.(想要了解CDQ的概念,可以看下这 ...

随机推荐

  1. 动态展开tableView的cell[2]

    动态展开tableView的cell[2] http://code4app.com/ios/%E5%8A%A8%E6%80%81%E6%B7%BB%E5%8A%A0cell/53845f8a933bf ...

  2. magento2 重置后台密码

    项目根目录:运行如下命令 bin/magento admin:user:create --admin-user="admin" --admin-password="123 ...

  3. springmvc入门之HelloWorld篇

    springmvc是一个基于spring的mvc框架,各种优点啥的用过就知道了.下面开始讲HelloWorldController的实现. 1.开发环境搭建<导jar包+配置文件> 1.1 ...

  4. Sublime Text 3中文乱码

    Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示: ...

  5. ant jmeter jenkins 实现自动化测试

    编者按: 本文核心的关键是ant去调用build.xml 执行自动化测试任务. bulid.xml 文件的内容按照注释修改为你自己服务器相关信息. 配置完成后一定要手动在服务器上执行一次,确保你配置的 ...

  6. TensorFlow函数(八)tf.control_dependencies()

    tf.control_dependencies(control_inputs) 此函数指定某些操作执行的依赖关系 返回一个控制依赖的上下文管理器,使用 with 关键字可以让在这个上下文环境中的操作都 ...

  7. Python学习之路 (一)开发环境搭建

    前言 python3应该是Python的趋势所在,当然目前争议也比较大,这篇随笔的主要目的是记录在centos6.7下搭建python3环境的过程 以及碰到的问题和解决过程. 另外,如果本机安装了py ...

  8. python基础整理6——爬虫基础知识点

    爬虫基础 什么是爬虫: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁. ...

  9. 多线程之并发容器ConcurrentHashMap

    这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步 ...

  10. 优化方法:SGD,Momentum,AdaGrad,RMSProp,Adam

    参考: https://blog.csdn.net/u010089444/article/details/76725843 1. SGD Batch Gradient Descent 在每一轮的训练过 ...