主席树+二分

每次对给定区间从1~区间长度len二分mid,查询区间内第mid大的数是不是大于等于mid。。

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define full(a, b) memset(a, b, sizeof a)
using namespace std;
typedef long long ll;
inline int lowbit(int x){ return x & (-x); }
inline int read(){int X = 0, w = 0; char ch = 0;while(!isdigit(ch)) { w |= ch == '-'; ch = getchar(); }while(isdigit(ch)) X = (X << 3) + (X << 1) + (ch ^ 48), ch = getchar();return w ? -X : X;
}
inline int gcd(int a, int b){ return a % b ? gcd(b, a % b) : b; }
inline int lcm(int a, int b){ return a / gcd(a, b) * b; }
template<typename T>
inline T max(T x, T y, T z){ return max(max(x, y), z); }
template<typename T>
inline T min(T x, T y, T z){ return min(min(x, y), z); }
template<typename A, typename B, typename C>
inline A fpow(A x, B p, C lyd){A ans = 1;for(; p; p >>= 1, x = 1LL * x * x % lyd)if(p & 1)ans = 1LL * x * ans % lyd;return ans;
}
const int N = 200005;
int n, q, tot, tree[20*N], lc[20*N], rc[20*N], a[N], b[N], root[N];int buildTree(int l, int r){int cur = ++tot;if(l == r) return tot;int mid = (l + r) >> 1;lc[cur] = buildTree(l, mid);rc[cur] = buildTree(mid + 1, r);return cur;
}int modify(int rt, int l, int r, int p){int cur = ++tot;tree[cur] = tree[rt] + 1, lc[cur] = lc[rt], rc[cur] = rc[rt];if(l == r) return cur;int mid = (l + r) >> 1;if(p <= mid) lc[cur] = modify(lc[cur], l, mid, p);else rc[cur] = modify(rc[cur], mid + 1, r, p);return cur;
}int query(int a, int b, int l, int r, int k){int p = tree[lc[a]] - tree[lc[b]];if(l == r) return l;int mid = (l + r) >> 1;if(k <= p) return query(lc[a], lc[b], l, mid, k);return query(rc[a], rc[b], mid + 1, r, k - p);
}int main(){while(~scanf("%d%d", &n, &q)){full(a, 0), full(b, 0), full(tree, 0), full(lc, 0), full(rc, 0), full(root, 0);for(int i = 1; i <= n; i++) b[i] = a[i] = read();sort(b + 1, b + n + 1);int k = unique(b + 1, b + n + 1) - b - 1;root[0] = buildTree(1, k);for(int i = 1; i <= n; i++){int p = lower_bound(b + 1, b + k + 1, a[i]) - b;root[i] = modify(root[i - 1], 1, k, p);}while(q --){int u = read(), v = read();int l = 1, r = v - u + 1, len = v - u + 1;while(l < r){int mid = (l + r + 1) >> 1;int tmp = b[query(root[v], root[u - 1], 1, k, len - mid + 1)];if(tmp < mid) r = mid - 1;else l = mid;}printf("%d\n", l);}}return 0;
}

转载于:https://www.cnblogs.com/onionQAQ/p/10727192.html

HDU6278 Just h-index相关推荐

  1. Just $h$-index HDU - 6278(主席树找区间大于等于k的个数)

    The hh-index of an author is the largest hh where he has at least hh papers with citations not less ...

  2. HDU - 6278 Just $h$-index主席树+二分

    HDU - 6278 Just hhh-index [题目描述] [题目分析] 题目要求在区间[l,r][l,r][l,r]内大于h的数不少于h个,对于这种最大化问题,我们应该想到二分. 最小情况显然 ...

  3. H 指数 (citations[index] > h 才能符合条件)

    原题链接:https://leetcode-cn.com/problems/h-index/ h概念: h 代表"高引用次数"(high citations),一名科研人员的 h ...

  4. elasticsearch使用脚本 滚动关闭索引,更新index setting

    一 问题 在旧的索引中更新mapping时,新增了分词器(分词器已经在模板中添加),但是在更新mapping时报错: 查看elasticsearch官网,发现不允许在已经存在的索引中动态更新分词器,只 ...

  5. H指数问题(USACO)

    H指数 是什么 h指数(也叫h-index)是一个混合量化指标,最初是由美国加利福尼亚大学圣地亚哥分校的物理学家乔治·赫希(Jorge Hirsch)在2005年的时候提出来的,其目的是量化科研人员作 ...

  6. H.264解码过程剖析-4

    x264开源工程实现H.264的视频编码,但没有提供对应的解码器.ffmpeg开源多媒体编解码集合汇集了市面上几乎所有媒体格式的编解码的源代码.其中的H264.c就是一个能正常解码x264编码码流的独 ...

  7. ddd install strclass.h error: friend declaration of ‘string common_prefix

    ddd install strclass.h error: friend declaration of 'string common_prefix ddd version as following: ...

  8. C语言的HashTable简单实现

    原文地址:http://blog.csdn.net/zmxiangde_88/article/details/8025541 HashTable是在实际应用中很重要的一个结构,下面讨论一个简单的实现, ...

  9. TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)

    本文作者是阿莱克西斯,原载于知乎,雷锋网(公众号:雷锋网)获得授权转载. (前排提醒,本文的人文内容部分稍稍带有艺术加工,请保持一定的幽默感进行阅读) 关注我最近想法的同学应该知道我最近都在把玩 TV ...

  10. Ajax (部分二:prototype.js代码)总结页面向后台传Form值、单个值和后台向前台传一个或是一组值...

    2019独角兽企业重金招聘Python工程师标准>>> 附录prototype.js的代码: Prototype = {Version: '1.5.1_rc4',Browser: { ...

最新文章

  1. 在CentOS 6.9 x86_64的nginx 1.12.2上开启echo-nginx-module模块实录
  2. 【BZOJ5461】 【PKUWC2018】—Minimax(线段树合并优化dp)
  3. ora-01034 / ORA-27101 错误.
  4. 使用remi安装php70,Linux下使用yum安装LNMP环境
  5. 观察者模式与Boost.Signals
  6. 2021-05-15
  7. 利用反射获取类或者方法或者字段上的注解的值
  8. zabbix报警系统docker部署,k8s部署,基本使用方法
  9. WPS中Excel二维表转一维表
  10. “中年跳槽,伤筋动骨”,你可要想清楚
  11. 配置postfix邮件监控
  12. 25-Web-京东登录界面
  13. 玩转 Windows 10 中的 Linux 子系统
  14. PC USB Warning
  15. stderr/stdout用法
  16. Keras深度学习实战——信用预测
  17. 如何加强数字版权保护
  18. linux里hba状态_(转)Linux主机HBA常用操作指南
  19. 关于会声会影导入视频出现卡顿花屏的解决办法
  20. 《推荐系统学习》之推荐系统那点事

热门文章

  1. 计算机网络网络层之IP协议(1)——IP数据报
  2. Security+ 学习笔记16 密钥管理
  3. 使用Python调用Netconf进行配置
  4. Linux四剑客详解——grep
  5. HDOJ--2000--ASCII码排序(java实现)
  6. PTA(BasicLevel)-1009 说反话
  7. linux运行程序时,中途出现意外怎么办?
  8. Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
  9. 欧拉工程第74题:Digit factorial chains
  10. Oracle生成流水号函数