题目链接:http://acm.neu.edu.cn/hustoj/problem.php?id=1702

题目大意:就是问每个人三个属性同时不低于另外几个人。。。。人不分先后

经典的三维偏序问题

解题思路:CDQ分治练手题

 #include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int const MAX_Z=+;
int const MAX_N=+;
struct Ope{
int x,y,z;
int ty,id;
Ope(int x,int y,int z,int ty,int id):x(x),y(y),z(z),ty(ty),id(id){}
Ope(){}
}; bool cmp_x(Ope a,Ope b){
if(a.x==b.x)return a.ty<b.ty;
return a.x<b.x;
}
bool cmp_y(Ope a,Ope b){
if(a.y==b.y)return a.ty<b.ty;
return a.y<b.y;
} vector<Ope> ope,ope2;
//vector<int> allZ;
vector<int>::iterator it;
int tree[MAX_Z];
int ans[MAX_Z];
void add(int x,int a){
while(x<MAX_Z){
tree[x]+=a;
x+=(x&(-x));
}
} int read(int x){
int sum=;
while(x){
sum+=tree[x];
x-=(x&(-x));
}
return sum;
} void work(){
for(int i=;i<ope2.size();i++){
if(ope2[i].ty==) add(ope2[i].z,);
else{
int temp=read(ope2[i].z);
ans[ope2[i].id]+=temp*ope2[i].ty;
}
}
for(int i=;i<ope2.size();i++)
if(ope2[i].ty==) add(ope2[i].z,-); } void CDQ(int L,int R){
if(L>=R)return;
int mid=(L+R)>>;
CDQ(L,mid);
ope2.clear();
for(int i=L;i<=mid;i++){
if(ope[i].ty==)
ope2.push_back(ope[i]);
}
for(int i=mid+;i<=R;i++){
if(ope[i].ty!=)
ope2.push_back(ope[i]);
}
sort(ope2.begin(),ope2.end(),cmp_y);
work();
CDQ(mid+,R);
} int main(){
int T;
int n;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
ope.clear();
//allZ.clear();
memset(tree,,sizeof(tree));
memset(ans,,sizeof(ans));
for(int i=;i<=n;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
ope.push_back(Ope(x,y,z,,i));
ope.push_back(Ope(x,y,z,,i));
//allZ.push_back(z);
}
/*
sort(allZ.begin(),allZ.end());
it=unique(allZ.begin(),allZ.end());
allZ.resize(distance(allZ.begin(),it));
for(int i=0;i<ope.size();i++){
ope[i].z=lower_bound(allZ.begin(),allZ.end(),ope[i].z)-allZ.begin()+1;
}
*/
sort(ope.begin(),ope.end(),cmp_x);
CDQ(,ope.size()-);
for(int i=;i<=n;i++){
printf("%d\n",ans[i]-);
}
}
return ;
}

CDQ分治就是将前半截对后半截的影响拿出来,把偏序问题降维。

三维的经过一次CDQ分治变成两维,四维的可以经过两次CDQ降成两维。

两维偏序问题,一维排序,另一维做树状数组处理就可以。

这里被注释掉的,是一种离散化的姿势,mark一下。

NEUOJ 1702 撩妹全靠魅力值 (三维偏序)的更多相关文章

  1. NEUOJ 1702:撩妹全靠魅力值(CDQ分治三维偏序)

    http://acm.neu.edu.cn/hustoj/problem.php?id=1702 思路:三维偏序模板题,用CDQ分治+树状数组或者树套树.对于三元组(x,y,z),先对x进行排序,然后 ...

  2. 人家为撩妹就鼓捣个网页,我做了个约炮APP(已开源)

    每年初夏第一场雷雨刚过,漫步河边的草坪,总是能闻到伴随着泥土的清新,这不是coco的前香,让人神魂颠倒:也不是gucci的后香,让人痴迷如梦.如24节气一样,它提醒人们,夏天到了.昨晚成都下了第一场雷 ...

  3. 撩妹技能 get,教你用 canvas 画一场流星雨

    开始 妹子都喜欢流星,如果她说不喜欢,那她一定是一个假妹子. 现在就一起来做一场流星雨,用程序员的野路子浪漫一下. 要画一场流星雨,首先,自然我们要会画一颗流星. 玩过 canvas 的同学,你画圆画 ...

  4. Test2014-3-1 魅力值比较

    魅力值比较 [问题描述] 大学生恋爱的问题造成了数量众多的异地恋,有许多J大的女生早早被Q大男生追走,这导致了J大男生的强烈不满.就在吐血高调地向一位J大美女展开攻势的之后,J大男生终于爆发了. 为了 ...

  5. Python之路,Day18 - 开发一个WEB聊天来撩妹吧

    Python之路,Day18 - 开发一个WEB聊天来撩妹吧   本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个 ...

  6. 【Python撩妹合集】微信聊天机器人,推送天气早报、睡前故事、精美图片分享

    福利时间,福利时间,福利时间 如果你还在为不知道怎么撩妹而烦恼,不知道怎么勾搭小仙女而困惑,又或者不知道怎么讨女朋友欢心而长吁短叹. 那么不要犹豫徘徊,往下看.接下来我会分享怎么使用 Python 实 ...

  7. 分享一个撩妹、装13神技能,0基础用Python暴力破解WiFi密码

    WiFi密码Python暴力破解   Python密码破解部分截图 获取视频资料,转发此文+点击喜欢,然后获取资料请加Python交流群:580478401,就可以获取视频教程+源码 环境准备: py ...

  8. 恋爱话术库撩妹至尊VIP版

    本软件来自互联网,解锁永久至尊VIP 是一款教你撩妹密语软件.和女生聊天没有话题? 不知道怎么逗乐女生? 女生生气了不会哄? 不知道怎么让女生愿意跟你聊下去? 不知道女生对你有没有意思? 遇到不知道怎 ...

  9. jquery checkbox全选 获取值

    <style> table { line-height:35px; }</style> <div align="left" style="m ...

随机推荐

  1. 批量插入 SqlBulkCopy的测试

    关于SqlBulkCopy的测试 最近要做.net关于sql大量插入,找到了sqlbulkcopy(自己google下,应该很多说明了)这个好东西,于是测试下性能,用了三个方法对比: 1)直接用ado ...

  2. 整体刷新和局部刷新frameset窗口

    在项目中,经常会遇到页面分割,最常见的系统或网站的主界面.主页面分为,上面系统简介.下面作者简介.左边系统功能菜单.右边则是菜单真正展示的界面. 遇到这种这种分割页面,大家首先想到是frameset, ...

  3. js---通过arguments来获取指定参数

    通过访问arguments对象的length属性可以获取有多少个参数传递给了函数. 如:每次被调用的时候,输出传入其中的参数个数 function doAdd(){ alert(arguments.l ...

  4. javascript一个作用域案例分析

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. WPF开发“Program '*' does not contain a static 'Main' method suitable for an entry point”错误

    WPF项目编译时出现“Program '*' does not contain a static 'Main' method suitable for an entry point”错误,   解决方 ...

  6. JQuery学习笔记系列(二)----

    jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).其中也提供了很多函数来更加简洁的实现复杂的功能. 事件切换函数toggle ...

  7. DELPHI调试出现disconnected session的解决办法

    我在控制面板中,是禁用了UAC的,如下图 但是,在注册表中启用了UAC(EnableLUA), 工程中请求了管理员权限,如下图: 所以,整个权限请求混乱了. 解决办法,要么把注册表的LUA设置为0,要 ...

  8. Verilog之$sreadmemb

    1 Memories  Memories file format is shown below, the address is specified as @ <address> in he ...

  9. JVM上的下一个Java——Scala

    Scala是一种针对 JVM 将函数和面向对象技术组合在一起的编程语言.Scala编程语言近来抓住了很多开发者的眼球.它看起来像是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格. ...

  10. 编写可维护的javascript阅读笔记

    格式 变量 变量命名, 采取小驼峰大小写 变量使用名词, 函数前缀为动词 局部变量应统一定义在函数的最上面, 而不是散落在函数的任意角落. 赋初始值的定义在未赋初始值的变量的上面. 我个人建议不使用单 ...