CDQ分治

  WA :在solve时,对y、z排序以后,没有处理「y、z相同」的情况,也就是说可能(1,2,3)这个点被放到了(2,2,3)的后面,也就是统计答案在前,插入该点在后……也就没有统计到!

  sad

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std; const int N = ;
int n,k;
struct node{
int x,y,z,id;
}a[], b[];
bool operator != (node a,node b){
return a.x != b.x || a.y != b.y || a.z != b.z;
}
bool operator < (node a,node b){
return a.x < b.x || (a.x == b.x && a.y < b.y) || (a.x == b.x && a.y == b.y && a.z < b.z);
}
bool cmp(node a,node b){
return a.y < b.y || (a.y == b.y && a.z < b.z) || (a.y == b.y && a.z == b.z && a.id < b.id);
}
int ans[N], rank[N], num[N]; int val[N], vis[N], times;
inline int lowbit(int x){
return x & (-x);
}
void add(int pos, int v){
for(int i = pos; i <= k; i += lowbit(i))
if (vis[i] == times) val[i] += v;
else val[i] = v, vis[i] = times;
}
int query(int pos){
int ans = ;
for(int i = pos; i; i -= lowbit(i))
if (vis[i] == times)
ans += val[i];
return ans;
} void solve(int l,int r){
int mid = l + r >> ;
if (l < mid) solve(l, mid);
sort(a + l, a + r + , cmp);
times ++;
for(int i = l; i <= r; i ++)
if (a[i].id <= mid) add(a[i].z, num[a[i].id]);
else rank[a[i].id] += query(a[i].z);
sort(a + l, a + r + );
if (mid + < r) solve(mid + , r);
}
int main(){
freopen("3262.in", "r", stdin);
freopen("3262.out", "w", stdout);
scanf("%d%d",&n,&k);
for(int i = ; i <= n; i ++)
scanf("%d%d%d",&a[i].x, &a[i].y, &a[i].z);
sort(a + , a + n + );
for(int i = ; i <= n; i ++) b[i] = a[i];
int cnt = ;
for(int i = ; i <= n; i ++)
if (b[i] != b[i - ]) a[++ cnt] = b[i], num[cnt] = ;
else num[cnt] ++;
for(int i = ; i <= cnt; i ++) a[i].id = i, rank[i] = num[i] - ;
// for(int i = 1; i <= cnt; i ++) printf("%d %d %d num = %d\n",a[i].x, a[i].y, a[i].z, num[i]);
solve(, cnt);
// for(int i = 1; i <= cnt; i ++) printf("rank[%d] = %d\n",i,rank[i]);
for(int i = ; i <= cnt; i ++)
ans[rank[i]] += num[i];
for(int i = ; i < n; i ++) printf("%d\n",ans[i]);
return ;
}

「BZOJ」「3262」陌上花开的更多相关文章

  1. 「bzoj 4180: 字符串计数」

    题目 真是一道好题 首先根据一个非常显然的贪心,如果给出了一个串\(S\),我们如何算最小操作次数呢 非常简单,我们直接把\(S\)拉到\(T\)的\(SAM\)上去跑,如果跑不动了就停下来,重新回到 ...

  2. 【BZOJ】【3262】陌上花开

    树套树 orz zyf 这题的思路……算是让我了解到了树套树的一种用途吧 三维...第一维排序,第二维树状数组,第三维treap 具体实现就是每个树状数组的节点保存一颗treap,然后就可以查询了. ...

  3. 「BZOJ 4228」Tibbar的后花园

    「BZOJ 4228」Tibbar的后花园 Please contact lydsy2012@163.com! 警告 解题思路 可以证明最终的图中所有点的度数都 \(< 3\) ,且不存在环长是 ...

  4. 「BZOJ 3645」小朋友与二叉树

    「BZOJ 3645」小朋友与二叉树 解题思路 令 \(G(x)\) 为关于可选大小集合的生成函数,即 \[ G(x)=\sum[i\in c ] x^i \] 令 \(F(x)\) 第 \(n\) ...

  5. 「BZOJ 4502」串

    「BZOJ 4502」串 题目描述 兔子们在玩字符串的游戏.首先,它们拿出了一个字符串集合 \(S\),然后它们定义一个字符串为"好"的,当且仅当它可以被分成非空的两段,其中每一段 ...

  6. 「BZOJ 4289」 PA2012 Tax

    「BZOJ 4289」 PA2012 Tax 题目描述 给出一个 \(N\) 个点 \(M\) 条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点 \(1\) 到点 \( ...

  7. 「BZOJ 2534」 L - gap字符串

    「BZOJ 2534」 L - gap字符串 题目描述 有一种形如 \(uv u\) 形式的字符串,其中 \(u\) 是非空字符串,且 \(v\) 的长度正好为 \(L\), 那么称这个字符串为 \( ...

  8. 「BZOJ 2956」模积和

    「BZOJ 2956」模积和 令 \(l=\min(n,m)\).这个 \(i\neq j\) 非常不优雅,所以我们考虑分开计算,即: \[\begin{aligned} &\sum_{i=1 ...

  9. 众安「尊享e生」果真牛的不可一世么?

    近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...

随机推荐

  1. SQL server学习(一)数据库的基本知识、基本操作和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

  2. 用pt-stalk定位MySQL短暂的性能问题

    背景] MySQL出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,很难准确定位问题原因. 对于这类需求,我们日常的MySQL分析工具都有些不足的地方: 1. 性能监控工具,目前粒度是分钟级 ...

  3. Ajax json交互和SpringMVC中@RequestBody

    Ajax json交互和SpringMVC中@RequestBody 标签: 背景 自己提供出去得接口中参数设置为@RequestBody VipPromotionLog vipPromotionLo ...

  4. 一个简单的python练习题

    最近几天看了python的基础知识,也写了两篇博客:http://futuretechx.com/python2/和 http://futuretechx.com/python-basicknowl/ ...

  5. Win7无法添加用户的问题

    这段时间搞dcom的东西,然后按照网上说的,用dcomcnfg打开管理器,在dcom中我的电脑里面属性中把默认身份验证级别改为 无.然后再使用的时候,发现win7中的账户管理里面,什么账户都没有了,不 ...

  6. 【BZOJ 1005】 1005: [HNOI2008]明明的烦恼 (prufer数列+高精度)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4981  Solved: 1941 Description ...

  7. android 开发 命名规范

    标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写. 2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字 ...

  8. 20172308《Java软件结构与数据结构》第一周学习总结

    教材学习内容总结 第 1 章 概述 软件质量的特征:正确性.可靠性.健壮性.可用性.可维护性.可重用性(别人写的组件自己可以拿过来用).可移植性.运行效率 数据结构:计算机存储.组织数据的方式 程序 ...

  9. 20172308 实验四《Java面向对象程序设计 》实验报告

    20172308 2017-2018-2 <程序设计与数据结构>实验四报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...

  10. Xtreme9.0 - Taco Stand 数学

    Taco Stand 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/taco-stand Des ...