hdu 5140 主席树
这题说的是每个员工有工资 水平 在公司待的年限这几个属性,有大量的查询 查的是在一定的水平和工作年限的工人总工资是多少 这个思路是比较简单的我们按照他们的水平排序,排完后,使用主席树不断地往里面插,然后查询即可
但是有一个问题就是 可能有些点不存在 因为这题不能讲所有的点全部离散
#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 主席树的更多相关文章
- hdu 5919 主席树(区间不同数的个数 + 区间第k大)
Sequence II Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- Super Mario HDU 4417 主席树区间查询
Super Mario HDU 4417 主席树区间查询 题意 给你n个数(编号从0开始),然后查询区间内小于k的数的个数. 解题思路 这个可以使用主席树来处理,因为这个很类似查询区间内的第k小的问题 ...
- HDU 2852 主席树
KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU 2655 主席树
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 6278 主席树(区间第k大)+二分
Just h-index Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)To ...
- HDU 2665(主席树,无修改第k小)
Kth number Time Limit: 15000/5000 MS (Java/Others) ...
- HDU 3333 & 主席树
题意: balabala SOL: 这题用主席树怎么做呢...貌似一模一样...一个一个建n棵的线段树.先把上一棵树复制下来,当a[i]出现过,就把这棵树里的那个位置去掉------一模一样的思维.. ...
- HDU 4251 --- 主席树(划分树是正解)
题意:查询区间中位数 思路:模板题,相当于区间第K大的数,主席树可以水过,但划分树是正解.但还没搞明白划分树,先上模板 #include <iostream> #include <c ...
- HDU - 4866 主席树 二分
题意:在x轴\([1,X]\)内的上空分布有n个占据空间\([L_i,R_i]\),高度\(D_i\)的线段,射中线段的得分为其高度,每次询问从x轴的\(x\)往上空射的最近k个线段的总得分,具体得分 ...
随机推荐
- NodeJS-003-自动刷新
修改index.js之后,发现刷新浏览器,没有任何更改,需要关闭应用重新启动. 为了避免每次修改代码后要自动重启.通过安装supervisor来监控代码修改. 安装:npm install -g su ...
- (转)关于android设备管理器的一些分析
转自http://bbs.pediy.com/showthread.php?t=183692 想必很多人都知道轰动一时android木马OBAD,该木马利用android设备管理器的漏洞,当用户激活设 ...
- 通过身份证分析出生年月日、性别、年龄的SQL语句
),) ) ),)<>'X' ) ) )<>'X' ),)),)),)) ),)),)),)) ) as int)) where [出生日期]<>'' #字符串格式 ...
- Delphi的保存文件对话框-TsaveDialog
TsaveDialog继承于TOpenDialog,只介绍以下几个内容: 1.TsaveDialog如何设定为保存的默认路径是当前程序所在的文件夹: 默认目录是当前程序所在目录应设置属性Initial ...
- java基础---->java多线程之Join(二)
如果主线程想等待子线程执行完成之后再结束,就可以使用join方法了.它的使用是等待线程对象销毁.今天我们就通过实例来学习一下多线程中join方法的使用.草在结它的种子,风在摇它的叶子.我们站着,不说话 ...
- video事件
/** video播放器*/ * @ src: 指定所要嵌入视频.文档的URL. * @ poster: 视频预览图像 * @ autoplay: 视频自动播放 * @ loop: 循环播放 * @ ...
- virgo-tomcat访问日志的详细配置
Tomcat 日志信息分为两类:1.运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息.2.访问日志信息,它记录的访问的时间.IP.访问的资料等相关信息. 关于tomcat访问日志的产 ...
- 分布式数据库主键id生成策略
分布式数据库部署主要分为两种,一种是读写分离.这个需要弄主从数据库.主要是写的时候写主数据库,读的时候读从数据库.分散读取压力,对于读多写少的系统有利于 提高其性能.还有一种是分布式存储,这种主要是将 ...
- 传智播客京东商城移动web开发
1.源码笔记 我的源码+笔记(很重要):链接: https://pan.baidu.com/s/1eScieps 密码: 3vyr 感谢传智播客项目相关视频:1.6天链接: https://pan.b ...
- hibernate基于注解实现映射关系的配置
关联关系的配置步骤 ①要理清楚管理关系 ②确定管理依赖关系的哪一方 1一对一例如:person 和IdCard ①确定依赖关系:一对一 ②依赖关系由person类管理代码如下: person: @En ...