这题说的是每个员工有工资 水平 在公司待的年限这几个属性,有大量的查询 查的是在一定的水平和工作年限的工人总工资是多少 这个思路是比较简单的我们按照他们的水平排序,排完后,使用主席树不断地往里面插,然后查询即可

但是有一个问题就是 可能有些点不存在 因为这题不能讲所有的点全部离散

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;
const int maxn = ;
typedef long long ll;
struct person{
ll S,L,A; int id;
bool operator <(const person Aa)const{
return L < Aa.L || ( L==Aa.L && id < Aa.id );
}
}P[maxn];
ll A[ maxn ],ans,L[maxn],val[maxn*];
int cL, cR,T[ maxn ],Ls[maxn*],Rs[maxn*],Len;
void insert(int L, int R, int K,ll v, int per, int &x){
x=++Len;
Ls[x]=Ls[per];
Rs[x]=Rs[per];
val[x]=val[per]+v;
if(L==R) return;
int mid = (L+R)>>;
if( K <= mid ) insert( L, mid, K, v, Ls[per], Ls[x] );
else insert( mid+, R, K, v, Rs[per], Rs[x] );
}
void query(int L, int R,int per,int cur){
if(cL<=L&&R<=cR){
ans+=val[cur]-val[per]; return ;
}
int mid=( L + R )>>;
if(cL<=mid) query( L, mid, Ls[per], Ls[cur] );
if(cR>mid ) query( mid+,R,Rs[per], Rs[cur] );
}
int main()
{
int n;
while(scanf("%d",&n)==){
for(int i=; i<n; ++i){
scanf("%I64d%I64d%I64d",&P[i].S,&P[i].L,&P[i].A);
A[i]=P[i].A;
L[i]=P[i].L;
P[i].id=i;
}
sort(P,P+n);
sort(A,A+n);
sort(L,L+n);
int num=unique(A,A+n)-A;
T[]=Ls[]=Rs[]=Len=;val[]=;
for(int i=; i<n; ++i){
int loc = lower_bound(A,A+num,P[i].A)-A+;
insert(,num,loc,P[i].S,T[i],T[i+]);
}
int m;
scanf("%d",&m);
ans=;
ll LL,LH,AL,AH;
for(int i=; i<m; ++i){
scanf("%I64d%I64d%I64d%I64d",&LL,&LH,&AL,&AH);
ll locL=min(LL+ans,LH-ans);
ll locR=max(LL+ans,LH-ans);
ll aL=min(AL+ans,AH-ans);
ll aR=max(AL+ans,AH-ans);
ans=;
int Le=lower_bound( L, L+n, locL )-L;
int Re=upper_bound( L, L+n, locR )-L;
if(Le==Re){
puts(""); continue;
}
cL=lower_bound( A , A+num , aL )-A;
cR=upper_bound( A , A+num , aR )-A-;
if(cL>=cR||aL==aR){
if((aL<=A[cL]&&A[cL]<=aR)==false ){
puts(""); continue;
}
}
cL++; cR++;
query(,num,T[Le],T[Re]);
printf("%I64d\n",ans);
}
}
return ;
}

hdu 5140 主席树的更多相关文章

  1. hdu 5919 主席树(区间不同数的个数 + 区间第k大)

    Sequence II Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  2. Super Mario HDU 4417 主席树区间查询

    Super Mario HDU 4417 主席树区间查询 题意 给你n个数(编号从0开始),然后查询区间内小于k的数的个数. 解题思路 这个可以使用主席树来处理,因为这个很类似查询区间内的第k小的问题 ...

  3. HDU 2852 主席树

    KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. HDU 2655 主席树

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. HDU 6278 主席树(区间第k大)+二分

    Just h-index Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)To ...

  6. HDU 2665(主席树,无修改第k小)

    Kth number                                                 Time Limit: 15000/5000 MS (Java/Others)   ...

  7. HDU 3333 & 主席树

    题意: balabala SOL: 这题用主席树怎么做呢...貌似一模一样...一个一个建n棵的线段树.先把上一棵树复制下来,当a[i]出现过,就把这棵树里的那个位置去掉------一模一样的思维.. ...

  8. HDU 4251 --- 主席树(划分树是正解)

    题意:查询区间中位数 思路:模板题,相当于区间第K大的数,主席树可以水过,但划分树是正解.但还没搞明白划分树,先上模板 #include <iostream> #include <c ...

  9. HDU - 4866 主席树 二分

    题意:在x轴\([1,X]\)内的上空分布有n个占据空间\([L_i,R_i]\),高度\(D_i\)的线段,射中线段的得分为其高度,每次询问从x轴的\(x\)往上空射的最近k个线段的总得分,具体得分 ...

随机推荐

  1. ARM漏洞

    Google安全团队Project Zero公布了多个高危漏洞,称这些漏洞几乎影响到了市面上所有的微处理器,AMD.ARM还是英特尔的处理器都难以幸免,围绕这些处理器打造的操作系统和硬件设备也会受到影 ...

  2. vue.js2.0+elementui ——> 后台管理系统

    前言: 因为观察到vue.js的轻量以及实时更新数据的便捷性,于是新项目便决定使用vue.js2.0以及与之配套的elementui来完成.只是初次接触新框架,再使用过程中,遇见了各种各样“奇葩”的问 ...

  3. ios Instruments 内存泄露

    本文转载至 http://my.oschina.net/sunqichao/blog?disp=2&p=3 虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是 ...

  4. Js debug模式

    在代码中需要调试的地方,输入“debugger;”:

  5. LeetCode——Pascal's Triangle II

    Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3 ...

  6. 使用CDN的网络访问过程

    CDN是指内容分发网络,在网络各处架设节点服务器,当用户访问时,CDN系统会根据网络流量.到用户的距离等因素将请求导向离用户最近的节点上. 访问过程是: 1.用户向浏览器提供要访问的域名. 2.浏览器 ...

  7. 详解struts2中配置action的方法

    如何解决action太多的问题??我们因为需要不同的方法,所以往往建立很多不同的类,但是每个类中往往仅仅几行代码,不仅浪费了时间,而且配置起来也很繁琐,所以,建立一个共有的类,然后根据以下方式来操作, ...

  8. sencha touch 入门系列 扩展篇之sencha touch 项目打包压缩

    经常有新手同学抱怨说sencha touch的项目加载速度为什么这么慢,经常要10秒左右的时间甚至更多, 大家都知道,sencha touch开发的项目中引用了大量的js文件,当我们打开项目时,st的 ...

  9. 关于移动端rem 布局的一些总结

    1.rem是什么? rem(font size of the root element)是指相对于根元素的字体大小的单位 2.为什么web app要使用rem? 实现强大的屏幕适配布局(淘宝,腾讯,网 ...

  10. 【BZOJ3939】[Usaco2015 Feb]Cow Hopscotch 动态规划+线段树

    [BZOJ3939][Usaco2015 Feb]Cow Hopscotch Description Just like humans enjoy playing the game of Hopsco ...