题意:

有一个长度为\(n(1 \leq n \leq 10^5)\)的序列\(a\)
询问区间\([l,r]\)中不超过\(h\)的数字的个数

分析:

离线查询,将所有的\(a_i\)和\(h_i\)离散化,然后直接查询就可以了。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int maxn = 100000 + 10;struct Node
{int lch, rch, sum;
};int sz, root[maxn];
Node T[maxn << 5];int n, m;
int a[maxn], b[maxn * 2], tot;
int l[maxn], r[maxn], h[maxn];int newnode() {++sz;T[sz].lch = T[sz].rch = T[sz].sum = 0;return sz;
}int insert(int pre, int L, int R, int pos) {int rt = newnode();T[rt].lch = T[pre].lch;T[rt].rch = T[pre].rch;T[rt].sum = T[pre].sum + 1;if(L < R) {int M = (L + R) / 2;if(pos <= M) T[rt].lch = insert(T[pre].lch, L, M, pos);else T[rt].rch = insert(T[pre].rch, M+1, R, pos);}return rt;
}int query(int s, int t, int L, int R, int v) {if(v >= R) return T[t].sum - T[s].sum;int M = (L + R) / 2;if(v <= M) return query(T[s].lch, T[t].lch, L, M, v);return T[T[t].lch].sum - T[T[s].lch].sum + query(T[s].rch, T[t].rch, M+1, R, v);
}int main()
{int _; scanf("%d", &_);for(int kase = 1; kase <= _; kase++) {printf("Case %d:\n", kase);scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++) {scanf("%d", a + i);b[i - 1] = a[i];}tot = n;for(int i = 1; i <= m; i++) {scanf("%d%d%d", l + i, r + i, h + i);b[tot++] = h[i];}sort(b, b + tot);tot = unique(b, b + tot) - b;for(int i = 1; i <= n; i++)a[i] = lower_bound(b, b + tot, a[i]) - b + 1;for(int i = 1; i <= m; i++)h[i] = lower_bound(b, b + tot, h[i]) - b + 1;sz = 0;for(int i = 1; i <= n; i++)root[i] = insert(root[i - 1], 1, tot, a[i]);for(int i = 1; i <= m; i++) {r[i]++;printf("%d\n", query(root[l[i]], root[r[i]], 1, tot, h[i]));}}return 0;
}

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/5290128.html

HDU 4417 Super Mario 主席树相关推荐

  1. #HDU 4417 Super Mario (主席树 + 二分)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

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

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

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

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

  4. HDU 4417 Super Mario(划分树)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  5. HDU 4417 Super Mario(划分树问题求不大于k的数有多少)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. hdu 4417 Super Mario 划分树+二分

    http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意: 给定一个长度为n的序列,求区间[L,R]中小于h的个数: 思路: 分三种情况: 1:如果该区间最小 ...

  7. HDU 4417 Super Mario(离线 + 树状数组)

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

  8. hdu 4417 Super Mario 树状数组||主席树

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Prob ...

  9. HDU 4417 Super Mario(莫队 + 树状数组 + 离散化)

    Super Mario 思路 区间查找问题,容易想到离线莫队,确实这题就是莫队,接下来我们考虑如何维护区间高度值问题. 既然是离线嘛,我们容易想到离散化和他挂钩,想想这题是否需要离散化,高度的最大值是 ...

  10. HDU 4417 Super Mario(线段树)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

最新文章

  1. 一致性代码段和非一致性代码段【转】
  2. php image 转 data uri 图片 (Image Data URIs with PHP)
  3. 监听浏览器的返回事件,禁止浏览器返回
  4. 在php中使用CKEDITOR在线编辑器
  5. python列表的存储结构_在python列表类型结构中合理地存储10亿个以上的值
  6. github第一步之初始化操作
  7. 【网络流24题】分配问题 最小最大费用最大流
  8. flashfxp中文破解版|flashfxp v5.4绿色破解版下载免注册码(强大的fxp/ftp客户端)
  9. 无线网络有信号显示未连接网络连接服务器,路由器无线网络受限制或无连接怎么办...
  10. Java实战项目《瑞吉外卖》
  11. 《缠中说禅108课》1:不会赢钱的经济人,只是废人
  12. 什么是基类,什么是父类
  13. Rich feature hierarchies for accurate object detection and semantic segmentation
  14. Java练习题——抽象类、方法以及接口
  15. 利用ffmpeg将avi格式文件转成mp4格式
  16. 人工智能 | ShowMeAI资讯日报 #2022.06.29
  17. 基于MATLAB的车牌识别研究
  18. 制作SD启动卡(含FAT32和EXT4两个分区)
  19. HNOI 2012 射箭 半平面交
  20. adb命令报错 error: no devices found 的解决办法

热门文章

  1. 微信小程序云开发教程-微信小程序的JS基础-常用的回调函数
  2. ajax 跨域 java_java+jQueryd的ajax跨域方法
  3. datatable自定义表单或者导出excel按钮,搜索
  4. HIVE 命令行操作和参数指引
  5. 1047 糖果 01背包扩展
  6. Centos 安装最新版git
  7. 项目4:抽奖程序 分时间段(按时段设置的奖品数为概率)
  8. Windows 录音机录制电脑声音、route 双网卡设置内外网共用
  9. iOS开发之App上架流程(2017)
  10. 剑指Offer_编程题_16