[主席树]HDOJ4417 Super Mario
题意:n个数 m个询问 ($n、m \le 10^5$)
每个询问有l, r, k 问的是[l, r]区间内有多少个数小于等于k
用主席树做的话查询第i小的数与k比较即可
1 #define lson l, m 2 #define rson m+1, r 3 const int N=1e5+5; 4 int L[N<<5], R[N<<5], sum[N<<5]; 5 int tot; 6 int a[N], T[N], Hash[N]; 7 int build(int l, int r) 8 { 9 int rt=(++tot); 10 sum[rt]=0; 11 if(l<r) 12 { 13 int m=(l+r)>>1; 14 L[rt]=build(lson); 15 R[rt]=build(rson); 16 } 17 return rt; 18 } 19 20 int update(int pre, int l, int r, int x) 21 { 22 int rt=(++tot); 23 L[rt]=L[pre], R[rt]=R[pre], sum[rt]=sum[pre]+1; 24 if(l<r) 25 { 26 int m=(l+r)>>1; 27 if(x<=m) 28 L[rt]=update(L[pre], lson, x); 29 else 30 R[rt]=update(R[pre], rson, x); 31 } 32 return rt; 33 } 34 35 int query(int u, int v, int l, int r, int k) 36 { 37 if(l>=r) 38 return l; 39 int m=(l+r)>>1; 40 int num=sum[L[v]]-sum[L[u]]; 41 if(num>=k) 42 return query(L[u], L[v], lson, k); 43 else 44 return query(R[u], R[v], rson, k-num); 45 } 46 47 int main() 48 { 49 int t, ca=1; 50 scanf("%d", &t); 51 while(t--) 52 { 53 tot=0; 54 int n, m; 55 scanf("%d%d", &n, &m); 56 for(int i=1; i<=n; i++) 57 { 58 scanf("%d", &a[i]); 59 Hash[i]=a[i]; 60 } 61 sort(Hash+1, Hash+n+1); 62 int d=unique(Hash+1, Hash+n+1)-Hash-1; 63 T[0]=build(1, d); 64 for(int i=1; i<=n; i++) 65 { 66 int x=lower_bound(Hash+1, Hash+d+1, a[i])-Hash; 67 T[i]=update(T[i-1], 1, d, x); 68 } 69 printf("Case %d:\n", ca++); 70 while(m--) 71 { 72 int l, r, k; 73 scanf("%d%d%d", &l, &r, &k); 74 l++, r++; 75 int ll=1, rr=r-l+1; 76 int ans=0; 77 while(ll<=rr) 78 { 79 int mm=(ll+rr)>>1; 80 int tmp=Hash[query(T[l-1], T[r], 1, d, mm)]; 81 if(tmp<=k) 82 { 83 if(mm==r-l+1 || Hash[query(T[l-1], T[r], 1, d, mm+1)]>k) 84 { 85 ans=mm; 86 break; 87 } 88 ll=mm+1; 89 } 90 else 91 { 92 if(mm==1 || Hash[query(T[l-1], T[r], 1, d, mm-1)]<=k) 93 { 94 ans=mm-1; 95 break; 96 } 97 rr=mm-1; 98 } 99 } 100 printf("%d\n", ans); 101 } 102 } 103 return 0; 104 }
HDOJ 4417
转载于:https://www.cnblogs.com/Empress/p/4662665.html
[主席树]HDOJ4417 Super Mario相关推荐
- HDOJ 4417 Super Mario
划分树+二分 Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 4417 Super Mario 树状数组||主席树
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Prob ...
- HDU4417 Super Mario (主席树模板)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- #HDU 4417 Super Mario (主席树 + 二分)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- HDU4417 Super Mario(离线树状数组或者主席树+二分)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Super Mario HDU - 4417(主席树解决区间数字小于k的个数||线段树+离线)
Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...
- 【HDU - 4417】Super Mario(查询区间小于K的数的个数,主席树)
题干: Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded ...
- HDU-4417 Super Mario (主席树)
Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...
- HDU 4417 Super Mario(线段树离线处理/主席树)
Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...
- Super Mario(主席树)
Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...
最新文章
- 使php支持mbstring库以及使用
- 如何确定敏捷是否适合你的团队?
- 七十四、SpringBoot 的数据缓存cache(一)
- python脚本:向表中插入新数据,删除表中最旧的数据
- win7无法打开设备和打印机
- 1.5编程基础之循环控制_41数字统计
- 三星Galaxy A73显示Geekcbench:或搭载骁龙778G
- 【Elasticsearch】Elasticsearch的IndexSorting:一种查询性能优化利器
- tesseract ocr 5.0 Api调用,delphi源码实现--识别率超高速度快
- 金融行业数据容灾架构中的数据复制技术
- CSS在Mac /Win上兼容显示
- 空洞卷积(Atrous/Dilated Convolution)
- 机器学习(一)——基础概念
- easyRtc设置视频清晰度的方法
- JVM 深入笔记(1)内存区域是如何划分的?
- 无聊到能吓死一湾人的鬼畜代码
- 2021首届-西部云安全峰会来了!9月26日西安见
- python tab键_python中tab键是什么意思
- poss八十七氟癸基/白色粉末状/溶于氟类树脂/自修复超疏水材料
- PKCS及PKCS 15个标准, Public-Key Cryptography Standards
热门文章
- 讨论:寺庙和尚义工不宜说感谢,可以祝福
- 南半球左撇子的人是否多一些
- 假疫苗事件,错在企业,责任在管理部门
- mysql union 别名报错_浅析mysqlunion和unionall
- mysql日期格式转换_MySQL日期格式转换
- C++调用其他语言(C#、java、python)
- html5 video mute按钮,How to mute an html5 video player
- 实现带有拉普拉斯修正的朴素贝叶斯_数据科学 | 算法工程师必备的机器学习贝叶斯分类器...
- python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...
- java中return提醒不兼容的_JAVA报return为不兼容类型