貌似比在线快很多。

看大佬怎么离线的才学会离线的,注意a[i].f=1,0,2的顺序不能混,为什么写一组数据一看就知道了。

#include<bits/stdc++.h>
using namespace std;
const int  maxn=1e5+10;
int sum[4*maxn],ans1[maxn],ans2[maxn];
struct node
{int l,r;
}t[4*maxn];
struct node2
{int l,r,p,v,f;
}a[4*maxn];
bool cmp(node2 x,node2 y)
{if(x.v==y.v)return x.f<y.f;else return x.v<y.v;
}
void build(int rt,int l,int r)
{t[rt].l=l;t[rt].r=r;if(t[rt].l==t[rt].r)return ;int mid=(l+r)>>1; build(rt<<1,l,mid);build(rt<<1|1,mid+1,r);
}
void pushup(int rt)
{sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void update(int p,int rt,int l,int r)
{if(l==r){sum[rt]++;return ;}int mid=(l+r)>>1;if(p>mid)update(p,rt<<1|1,mid+1,r);else update(p,rt<<1,l,mid); pushup(rt);
}
int  query(int l,int r,int u)
{if(t[u].l>=l&&t[u].r<=r){   return sum[u]; }int mid=(t[u].l+t[u].r)/2;int res=0;if(mid>=l)res+=query(l,r,u<<1);if(r>mid) res+=query(l,r,u<<1|1); return res;
}
int main()
{int n,m;while(~scanf("%d %d",&n,&m)){build(1,1,n);for(int i=1;i<=n;i++){scanf("%d",&a[i].v);a[i].f=1;a[i].p=i;}int cnt=n;for(int i=1;i<=m;i++){int tmp=2*i-1;scanf("%d%d%d%d",&a[cnt+tmp].l,&a[cnt+tmp].r,&a[cnt+tmp].v,&a[cnt+tmp+1].v);a[cnt+tmp+1].l=a[cnt+tmp].l;a[cnt+tmp+1].r=a[cnt+tmp].r;a[cnt+tmp].f=0;a[cnt+1+tmp].f=2;a[cnt+tmp].p=a[cnt+tmp+1].p=i; }cnt+=2*m;sort(a+1,a+1+cnt,cmp);for(int i=1;i<=cnt;i++){if(a[i].f==1) update(a[i].p,1,1,n);else if(a[i].f==0) ans1[a[i].p]=query(a[i].l,a[i].r,1);else ans2[a[i].p]=query(a[i].l,a[i].r,1);}for(int i=1;i<=m;i++){printf("%d\n",ans2[i]-ans1[i]);}}}

xdoj 1114(线段树离线处理)相关推荐

  1. HDU - 4417 Super Mario(主席树/线段树+离线)

    题目链接:点击查看 题目大意:给出由 n 个数的数列,再给出 m 次查询,每次查询需要输出 [ l , r ] 内小于等于 h 的数有多少个 题目分析:大晚上睡不着觉随便做做题,发现这个题目原来可以用 ...

  2. SPOJ - DQUERY D-query(莫队/线段树+离线/主席树)

    题目链接:点击查看 题目大意:给出一个由n个数组成的序列,再给出m次查询,每次查询区间[l,r]中有多少个不同的数 题目分析:莫队模板题,直接套板子就好了 有点意思的是函数返回值为布尔类型,然后没有r ...

  3. Super Mario HDU - 4417(主席树解决区间数字小于k的个数||线段树+离线)

    Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...

  4. HDU 4417 Super Mario(线段树离线处理/主席树)

    Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...

  5. HDU - 3804 Query on a tree(树链剖分+线段树+离线处理)

    题目链接:点击查看 题目大意:给出一棵树,每条边上都有一个权值,给出m个查询:a,b:问从点1到点a的唯一路径上,在边权小于等于b的边中选出边权最大的值输出,若没有符合条件的边则输出-1: 题目分析: ...

  6. HDU - 3333 Turing Tree(线段树+离线处理)

    题目链接:点击查看 题目大意:给定一个长度为n的数列,依次求m个区间中不相同数字之和 题目分析:n给的是3e4,看到区间问题先要想到线段树或差分区间或动态规划,暴力是肯定不行滴,那么这个题已经知道是需 ...

  7. No Pain No Game HDU - 4630(gcd+线段树+离线处理)

    Life is a game,and you lose it,so you suicide. But you can not kill yourself before you solve this p ...

  8. SPOJ GSS2 Can you answer these queries II (线段树离线) - xgtao -

    Can you answer these queries II 这是一道线段树的题目,维护历史版本,给出N(<=100000)个数字(-100000<=x<=100000),要求求出 ...

  9. 【BZOJ2221】面试的考验,随机数列+线段树+离线

    传送门 shallwe's blog //以上内容由shallwe本人暴力添加 思路: 好题 断断续续想了1周左右 暴力思路显然是O(n2logn)O(n^2\log n)的 我最开始的想法是用莫队+ ...

  10. HDU4417 线段树 + 离线处理

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 , 线段树(或树状数组) + 离线处理 最近看了几道线段树的题都是需要离线处理数据的,正好这块比 ...

最新文章

  1. std thread
  2. idea从mapper接口跳到xml文件
  3. BFS(广度优先搜索)
  4. 初识python之函数基础
  5. mysql怎么插入10w测试数据_mysql快速插入100万测试数据
  6. 信息学奥赛一本通 1190:上台阶 | OpenJudge NOI 2.3 3525:上台阶
  7. python实现文件重命名_基于python实现复制文件并重命名
  8. ASP.NET MVC 4 (二)控制器
  9. 鳄梨种植者使用传感器节省种植成本
  10. 从计算机复试看中国教育——一个面试官的经历
  11. C# 电子发票生成pdf
  12. 火狐浏览器设置深色主题
  13. ISO7816协议中psam卡片的延时单元etu
  14. 自动化测试金字塔与反模式
  15. macOS输入法导致系统卡住鼠标圈圈问题/风火轮
  16. HTML绘制齿轮,使用css3制作齿轮loading动画效果
  17. 如何查看手机计算机历史记录,怎么查看电脑历史操作记录
  18. 【Web技术】1008- coding优雅指南:函数式编程
  19. 老猿学5G扫盲贴:中国移动网络侧CHF主要功能及计费处理的主要过程
  20. 怎么利用NTFS文件权限打造安全u盘

热门文章

  1. 2022-2028年中国海水养殖行业市场研究及前瞻分析报告
  2. 2022-2028年中国加气站行业市场研究及前瞻分析报告
  3. 如何在本地访问远程服务器的jupyter notebook?
  4. 【运维学习笔记】生命不息,搞事开始。。。
  5. js获取html代码中所有图片地址
  6. python符号求导
  7. 1-2 用Python编写【房价预测】模型----paddle
  8. 黎曼曲面Riemann Surface
  9. Android系统的启动过程
  10. 2021年大数据ELK(二十八):制作Dashboard