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个线段的总得分,具体得分 ...
随机推荐
- Access数据操作-01
1.未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 在菜单 “项目”的最下面 工程属性 菜单,选择“生成”选项卡,将目标平台由“Amy CPU”或者“*64”改成“* ...
- x64dbg使用心得
使用ScyllaHide插件时 注意一下事项 xdbg64设置里启动 附加必须第一次断下在 系统断点 然后再启用ScyllaHide. 停止调试 脱离时.必须关闭ScyllaHide 否则会报异常 x ...
- Python subprocess shell 编程规范
使用subprocess通过shell调用另一个模块组件时,需要对返回的code进行判断.判断结果为执行失败时需要raise Exception,不然调用树过于复杂时,我们很难跟踪到异常发生的位置.s ...
- js:{}与new Object()的区别是什么
var a = {}; var b = new Object(); 这两种创建对象方式,从测试效果来看,{}会快一点. {} 这个叫做对象字面量 如果new Object()中没有传入参数,与{}是一 ...
- 【BZOJ1818】[Cqoi2010]内部白点 扫描线+树状数组
[BZOJ1818][Cqoi2010]内部白点 Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变 ...
- Android自定义类似ProgressDialog效果的Dialog
Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果的图片和背景图片(也可以不要背景). 如我要的效果: 2.定义loadin ...
- java的bean和map互转的工具类
import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;i ...
- 二进制状态压缩dp(旅行商TSP)POJ3311
http://poj.org/problem?id=3311 Hie with the Pie Time Limit: 2000MS Memory Limit: 65536K Total Subm ...
- [Nginx] – 安全优化 – 配置文件优化
1.配置Nginx gzip压缩实现性能优化 1.Nginx gzip压缩功能介绍 Nginx gzip压缩模块提供了压缩文件内容的功能,用户请求的内容在发送出用客户端之前,Nginx服务器会根据一 ...
- Nginx降权启动
给Nginx服务降权,用lol用户跑Nginx,给开发及运维设置普通账号,只要和lol同组即可管理Nginx,该方案解决了Nginx管理问题,防止root分配权限过大. 开发人员使用普 ...