链接:http://hihocoder.com/problemset/problem/1483

题意:一个区间价值为区间中相同数的对数。。求第k大区间

思路:和51nod上一个第k大区间类似,二分答案,统计是不是第k大的时候通过枚举左端点来求答案。时间复杂度nlogn,注意要提前做离散化处理,不然nlognlogn无法通过。

代码:

#include <bits/stdc++.h>
using namespace std;
long long n;
long long k;
map<int,int> mp;
long long hashs[200005];
const int maxn=200005;int arr[maxn];
int cnt[maxn];
long long cal(long long x){long long ret=0;memset(hashs,0,sizeof(hashs));long long L=0,R=0,sum=0;hashs[arr[0]]++;for(int i=0;i<n;i++){while(sum<x&&R<n){R++;if(R>=n) break;sum+=hashs[arr[R]];hashs[arr[R]]++;}if(sum>=x)ret+=n-R;hashs[arr[i]]--;sum-=hashs[arr[i]];}return ret;
}long long bs(long long a,long long b,long long val){long long low=a,high=b;long long ret=0;while(low<=high){long long mid=(low+high)/2;if(cal(mid)<=val){high=mid-1;}else{low=mid+1;}}return low-1;
}int main(){int t;scanf("%d",&t);while(t--){mp.clear();scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&arr[i]);mp[arr[i]]=1;}int idx=0;for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++)it->second=idx++;for(int i=0;i<n;i++){arr[i]=mp[arr[i]];}printf("%lld\n",bs(0,n*(n-1)/2,n*(n+1)/2-k));}return 0;
}

转载于:https://www.cnblogs.com/zhangxianlong/p/10672517.html

hiho 1483 区间计数问题+二分答案相关推荐

  1. jzoj4817-square【区间RMQ,二分答案】

    正题 题目链接:https://jzoj.net/senior/#contest/show/2956/2 题目大意 n∗mn*mn∗m的010101矩阵,每次询问(x1,y1,x2,y2)(x1,y1 ...

  2. 【2021牛客暑期多校训练营4】Average (二分答案,区间/子数组最大平均值,)

    J Average 题意: 给出长为n,m的序列ai和bi,定义nm的矩阵wij=ai+bj,求一个大小>=xy的子矩阵的平均值最大. 思路: 因为n的范围为1e5,直接n*m计算出wij就已经 ...

  3. 【hiho】38 二分·二分答案【二分答案】

    传送门:二分·二分答案 分析 因为 两个相邻战略点之间可能不止一条航线,所以不能够用邻接矩阵来存储图. 用邻接表来存储,用数组模拟. 二分答案就是二分枚举答案,验证答案的正确性,每次验证可将范围缩小一 ...

  4. 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析

    目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...

  5. Luogu P2920 时间管理【二分答案】

    二分答案水题. (像我这么蒻的人都能十几分钟A掉) https://www.luogu.org/problemnew/show/P2920 开始时间一定在从0到min(t[i]-s[i])的一段区间上 ...

  6. luoguP1419 寻找段落(二分答案+单调队列)

    题意 给定一个长度为n的序列a1~an,从中选取一段长度在s到t之间的连续一段使其平均值最大.(n<=100000) 题解 二分答案平均值. judge时把每一个a[i]-mid得到b[i] 在 ...

  7. 牛客网暑期ACM多校训练营(第五场)A-gap (二分答案)

    题目描述 给定n 门课以及它们的学分和绩点,定义总绩点是所有课的加权平均数,给定一个数k, 你可以删除最多k 门课,求你的总绩点最大能到多少 1 <=n <=10^5 解题思路 考虑分数规 ...

  8. 【题解】 [HEOI2016]排序题解 (二分答案,线段树)

    题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行 ...

  9. Bzoj 3343: 教主的魔法(分块+二分答案)

    3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MB Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息 ...

最新文章

  1. 同济计算机转专业吗,被不喜欢的专业录取了?大学想转专业需谨慎
  2. arXiv | 图表示方法驱动大分子计算研究
  3. dubbo-admin管理控制台安装
  4. sap crm行业解决方案_SAP云平台和第三方CRM解决方案(火锅)互联
  5. JavaScript算法与数据结构——字典详解
  6. 4、mysql数据库的权限管理
  7. 用CNN做NLP文本分类竞赛
  8. VS开发中,常见编译问题解决方案
  9. 分段三次hermite插值python
  10. JAVA开发交互式CAD系统_用VB.NET和VC#.NET开发交互式CAD系统(源代码)
  11. 误差传递公式(law of propagation of uncertainties)
  12. Ubuntu环境下配置巴斯勒相机及相机测试
  13. Mutisim电路仿真的应用(有源低通滤波器的设计)
  14. MYSQL安装+Mysql-front 注册码
  15. 新型传感器将改变大脑控制的机器人技术
  16. 网络爬虫——豆瓣电影排行榜数据抓取(高级)
  17. 面向对象[方法]定义一个长方形类,定义 求周长和面积的方法
  18. 一步一步学RMAN第五篇 RMAN基础知识补充 一
  19. 网络安全绝地求生-面试题
  20. Babel转码器(ES6)

热门文章

  1. mysql 启动 failed to start_Linux下启动MySQL提示“mysql deamon failed to start”错误的解决办法...
  2. 如何做到微信机器人不封号_微信如何做到一键群发所有群
  3. golang怎么给空结构体赋值
  4. 【Java面试题】docker拉取镜像
  5. 【性能优化实战】java嵌入式开发pos
  6. python【数据结构与算法】KMP和扩展算法
  7. python多进程优化_『Python』多进程处理
  8. python解析库_Python命令行解析库argparse
  9. 外包网络推广公司浅析想保持稳定的SEO排名和流量,需要做什么呢?
  10. 全球缺芯+瑞萨火灾——网络营销之下一众车企减产的减产,停产的停产