HDU - 6278 Just hhh-index
【题目描述】

【题目分析】
题目要求在区间[l,r][l,r][l,r]内大于h的数不少于h个,对于这种最大化问题,我们应该想到二分。
最小情况显然是1.最大情况显然是r−l+1r-l+1r−l+1,对于一个hhh,我们如何判断能否满足条件呢?
我们可以用主席树方便的求出区间第h大,如果区间第h大大于等于h,那么就能满足条件
比较伤心的是我虽然一开始就想到了正确的思路但是区间第k大却写错了。因为之前一直写的是将所有数据都放在结构体中,所以一个赋值就讲所有数据复制了,但是这次我想写简单一点,就将计数的数组放在了外面,然后在创建新节点的时候却忘记了复制,导致疯狂wa,还一直找不到为什么,啊啊啊,最终还是调试找到了
【AC代码】(没有借鉴其他人的,嘿嘿)

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<climits>
#include<string>
#include<cmath>
#include<cstdlib>using namespace std;const int MAXN=100005;
int a[MAXN];
int n,m;
struct node
{int ls,rs;
}tree[MAXN*40];
int root[MAXN*40];
int cnt[MAXN*40];
int top;void Insert(int &k,int x,int l,int r)
{tree[++top]=tree[k]; cnt[top]=cnt[k];cnt[top]++; k=top;//printf("l=%d r=%d x=%d cnt[%d]=%d\n",l,r,x,k,cnt[k]);if(l==r) return;int mid=(l+r)>>1;if(x<=mid) Insert(tree[k].ls,x,l,mid);else Insert(tree[k].rs,x,mid+1,r);
}int query(int i,int j,int k,int l,int r)
{if(l==r) return l;int tmp=cnt[tree[j].rs]-cnt[tree[i].rs];int mid=(l+r)>>1;if(k<=tmp) return query(tree[i].rs,tree[j].rs,k,mid+1,r);else return query(tree[i].ls,tree[j].ls,k-tmp,l,mid);
}int main()
{int u,v,l,r,mid,ans;while(~scanf("%d%d",&n,&m)){memset(cnt,0,sizeof(cnt));memset(root,0,sizeof(root));memset(tree,0,sizeof(tree));top=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);root[i]=root[i-1];Insert(root[i],a[i],1,n);}/*for(int i=1;i<=n;i++){printf("%d ",query(root[0],root[n],i,1,n));}*/for(int i=0;i<m;i++){scanf("%d%d",&u,&v);l=1; r=v-u+1;while(l<=r){mid=(l+r)>>1;if(query(root[u-1],root[v],mid,1,n)>=mid){ans=mid;l=mid+1;}else{r=mid-1;}}printf("%d\n",ans);}}return 0;
}

HDU - 6278 Just $h$-index主席树+二分相关推荐

  1. HDU - 6621 K-th Closest Distance——主席树+二分

    [题目描述] HDU - 6621 K-th Closest Distance [题目分析] 因为看到第kkk大的要求,刚开始的时候一直都在想怎么运用第kkk大来解决问题,但是后来看其他人的博客才发现 ...

  2. HDU4417 Super Mario(离线树状数组或者主席树+二分)

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

  3. K-th Closest Distance HDU - 6621(第k小绝对值+主席树+二分)

    You have an array: a1, a2, , an and you must answer for some queries. For each query, you are given ...

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

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

  5. BZOJ3473:字符串(后缀数组,主席树,二分,ST表)

    Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 一 ...

  6. hdu 4348 To the moon (主席树)

    版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 4348 题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 . (2)Q ...

  7. Just h-index(主席树+二分)

    链接:https://ac.nowcoder.com/acm/contest/1107/C 来源:牛客网 找一段区间内,大于等于这个数的个数大于等于这个数本身,问符合条件的最大值是多少. 思路:把数据 ...

  8. Cutting Bamboos(牛客多校第九场H主席树+二分+思维)

    链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 There are n bamboos arranged in a line. The i-th ...

  9. [HEOI2016/TJOI2016]字符串 (后缀数组+主席树+二分)

    description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 n 的字符串 s,和 m 个问题.佳媛姐姐必须正确回答这 m 个问 ...

最新文章

  1. 把握芯片科技发展趋势 促进半导体产业创新突破
  2. HDU 2159 FATE 动态规划二维费用的背包问题
  3. C MySql封装类 高性能连接池_在vc中通过连接池操作mysql(api方式),附c++访问mysql的封装类...
  4. taskkill 命令:
  5. 想学习Python,这套教程再适合你不过了!
  6. python web框架 - Django
  7. Springboot版本的WebSocket向app端推送消息实现
  8. android仿饿了么,Android 仿饿了么下拉Dialog
  9. 由摊余成本法谈到债券估值
  10. C#winform软件长时间运行后无响应问题解决
  11. 三国杀全武将台词大全(标准+神话再临+一将成名12345+SP+国战+其他+皮肤)
  12. 支付宝没有优势了,五大银行宣布今起手机银行转账汇款免收手续费
  13. 我们的时空之旅(一)——丽江古城
  14. 干货 | 京东云域名注册及备案最佳实践
  15. 好用的Chrome插件大全网站:插件小屋
  16. vb.net程序可以在触摸屏上运行么_台达PLC VP-PM运动控制型在大型铣镗床上的应用...
  17. 顺丰 android 面试题,经典的顺丰面试问题
  18. 「首席架构师推荐」React生态系统大集合
  19. 查询所有表、索引、视图信息的SQL语句-Mysql/oracle/sql server的不同实现方式
  20. 2022年同花顺Java面试

热门文章

  1. Day 9 函数的初识1
  2. selenium 等待页面加载完成
  3. appium判断元素是否存在_Python+selenium自动化之判定元素是否存在
  4. jquery ajax下拉联动,基于jQuery Ajax实现下拉框无刷新联动
  5. mongodb lbs java_LBS JAVA Spring mongoDB
  6. java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...
  7. mysqls压力测试怎么用_阿里研究员:测试稳定性三板斧,我怎么用?
  8. Linux怎么处理binray文件,Linux下如何反汇编arm raw binary文件
  9. python获取最近N天工作日列表、节假日列表
  10. 【C++grammar】访问控制与抽象类与纯虚函数