http://www.lydsy.com/JudgeOnline/problem.php?id=3262

三维偏序

第一维排序,第二维CDQ分治,第三维树状数组

#include<cstdio>
#include<iostream>
#include<algorithm> #define lowbit(x) x&-x #define N 100001
#define M 200001 using namespace std; struct node
{
int a,b,c;
int id;
int cnt;
}e[N],L[N],R[N]; int sum[N],ans[N]; int m;
int c[M]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} bool cmp1(node p,node q)
{
if(p.a!=q.a) return p.a<q.a;
if(p.b!=q.b) return p.b<q.b;
return p.c<q.c;
} bool cmp2(node p,node q)
{
return p.b<q.b;
} void change(int x,int y)
{
while(x<=m)
{
c[x]+=y;
x+=lowbit(x);
}
} int query(int x)
{
int sum=;
while(x)
{
sum+=c[x];
x-=lowbit(x);
}
return sum;
} void solve(int l,int r)
{
if(l==r)
{
sum[e[l].id]+=e[l].cnt-;
return;
}
int mid=l+r>>;
for(int i=l;i<=mid;++i) L[i]=e[i];
for(int i=mid+;i<=r;++i) R[i]=e[i];
sort(L+l,L+mid+,cmp2);
sort(R+mid+,R+r+,cmp2);
int i=l,j=mid+;
for(;j<=r;++j)
{
while(i<=mid && L[i].b<=R[j].b)
{
change(L[i].c,L[i].cnt);
i++;
}
sum[R[j].id]+=query(R[j].c);
}
for(int k=l;k<i;++k) change(L[k].c,-L[k].cnt);
solve(l,mid);
solve(mid+,r);
} int main()
{
int n;
read(n); read(m);
for(int i=;i<=n;++i)
{
read(e[i].a);
read(e[i].b);
read(e[i].c);
}
sort(e+,e+n+,cmp1);
for(int i=;i<=n;++i) e[i].id=i;
int tot=;
for(int i=;i<=n;++i)
{
if(e[i].a!=e[i-].a || e[i].b!=e[i-].b || e[i].c!=e[i-].c)
{
e[++tot].cnt=;
e[tot].a=e[i].a;
e[tot].b=e[i].b;
e[tot].c=e[i].c;
e[tot].id=tot;
}
else e[tot].cnt++;
}
solve(,tot);
for(int i=;i<=tot;++i) ans[sum[i]]+=e[i].cnt;
for(int i=;i<n;++i) cout<<ans[i]<<'\n';
}

bzoj千题计划145:bzoj3262: 陌上花开的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  5. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  9. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. HDU 4418 Time travel 期望dp+dfs+高斯消元

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4418 Time travel Time Limit: 2000/1000 MS (Java/Othe ...

  2. Sprint--5.21

    看到作业要求组长就召开小组成员开了一个简短的会议,会议内容大致是这样的: 1.再次明确任务:就是每一个人都要清楚知道自己扮演的角色应该做些什么,怎么去做: 2.组长定时更新博客,每一位小组成员也要写进 ...

  3. 【CSAPP笔记】7. 汇编语言——过程调用

    一个过程调用包括将数据(以参数和返回值的形式)与控制从代码的一部分传递到另一部分.除此之外,在进入时为过程的局部变量分配空间,在退出的时候释放这些空间.数据传递.局部变量的分配和释放通过操纵程序栈来实 ...

  4. golang 反射

    参考:|--http://blog.51cto.com/speakingbaicai/1707637 |--https://studygolang.com/articles/6324 反射是在gola ...

  5. wait 和 sleep 区别

    /* wait 和 sleep 区别? 1,wait可以指定时间也可以不指定. sleep必须指定时间. 2,在同步中时,对cpu的执行权和锁的处理不同. wait:释放执行权,释放锁. sleep: ...

  6. Alpha阶段敏捷冲刺⑧

    1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 报表能和账单数据结合起来 工作中遇到的困难. 后端和程序的交互还是没 ...

  7. php $_SERVER['HTTP_USER_AGENT'] 2

    //mobile  false pc   true no pc    function is_mobile(){        $agent = strtolower($_SERVER['HTTP_U ...

  8. 聚合函数count里面加条件

    聚合函数中如果想汇总某一类数据,可以在括号中增加条件: sum(case when 字段>0 then 1 else 0 end) as 字段 *注意:count(case when 字段> ...

  9. 再看case语句

    再看case语句,case语句只处理单条记录,而不是set 列名的使用,可以当做数值来使用: case when 后面简直是完美的的,什么东西都是能放的,只要是一个逻辑上的true/false的逻辑就 ...

  10. DispatcherServlet的url mapping为“/”时,对根路径访问的处理

    背景 众所周知,Tomcat的Default Servlet的servlet-mapping为 <servlet-mapping> <servlet-name>default& ...