基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

定义一个区间的值为其众数出现的次数
现给出n个数,求将所有区间的值排序后,第K大的值为多少。

众数(统计学/数学名词)_百度百科

Input
第一行两个数n和k(1<=n<=100000,k<=n*(n-1)/2)
第二行n个数,0<=每个数<2^31
Output
一个数表示答案。
Input示例
4 2
1 2 3 2
Output示例
2

//首先,考虑区间的值的性质,如果区间的值为 x ,那么,区间无论怎么左右扩展,区间的值必然大于等于 x 。
那么,计算区间的值大于等于 x ,可以用尺取在 O(n) 时间算出,显然,这是有单调性的,二分即可
 # include <cstdio>
# include <cstring>
# include <cstdlib>
# include <iostream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <bitset>
# include <sstream>
# include <set>
# include <cmath>
# include <algorithm>
# pragma comment(linker,"/STACK:102400000,102400000")
using namespace std;
# define LL long long
# define pr pair
# define mkp make_pair
# define lowbit(x) ((x)&(-x))
# define PI acos(-1.0)
# define INF 0x3f3f3f3f3f3f3f3f
# define eps 1e-
# define MOD inline int scan() {
int x=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-') f=-; ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-''; ch=getchar();}
return x*f;
}
inline void Out(int a) {
if(a<) {putchar('-'); a=-a;}
if(a>=) Out(a/);
putchar(a%+'');
}
# define MX
/**************************/ int n,k;
int a[MX];
int b[MX];
int num[MX]; bool check(int x)
{
memset(num,,sizeof(num));
int l=,r=,flag=;
LL tot=;
while (r<=n+)
{
if (!flag)
{
if (r==n+) break;
num[a[r]]++;
if (num[a[r]]>=x) flag=r;
r++;
}
else
{
while (flag)
{
tot += n-r+;
num[a[l]]--;
if (num[a[flag]]<x) flag=;
l++;
}
}
}
if (tot>=k) return ;
return ;
} int main()
{
scanf("%d%d",&n,&k);
for (int i=;i<=n;i++)
{
scanf("%d",&a[i]);
b[i] = a[i];
}
sort(b+,b++n);
for (int i=;i<=n;i++)
a[i] = lower_bound(b+,b++n,a[i])-b; int l=, r=n;
int ans;
while (l<=r)
{
int mid = (l+r)>>;
if (check(mid)) ans=mid,l=mid+;
else r=mid-;
}
printf("%d\n",ans);
return ;
}
 

最新文章

  1. Razor Engine,实现代码生成器的又一件利器
  2. NHibernate生成实体类、xml映射文件
  3. JConsole监控远程Tomcat服务器
  4. 【转】Web标准中的常见问题
  5. [Windows Phone] 地图覆叠层控制项(MapOverlay )
  6. C语言变参函数的编写
  7. vscode: Visual Studio Code 常用快捷键
  8. 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法
  9. [html] 学习笔记--Web存储
  10. Java 数组扩容
  11. js获取url地址栏参数
  12. ajax调用WebAPI添加数据
  13. Java笔试题库之选题题篇【141-210题】
  14. [JLOI2015]装备购买 (高斯消元)
  15. 非const引用不能指向临时变量
  16. JIRA python篇之统计产品尚未解决的bugs
  17. 微信小程序的图片懒加载
  18. 20179202《Linux内核原理与分析》第一周作业
  19. MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址
  20. Google Java编程风格指南中文版(转)

热门文章

  1. 大话项目管理工具之Jira篇
  2. Linux下 安装VMware Tools工具
  3. JavaScript对象深复制
  4. 金典 SQL笔记(2)
  5. JAVA的IO编程:管道流
  6. iOS开发-简单获取View截图图像(Quartz2D)
  7. vue 记一次编译没反应、无进度、没有任何报错的提示,但后台却TM一直消耗内存的BUG:
  8. unity, 自定义类中使用print
  9. Atitit.js&#160;this错误指向window的解决方案
  10. hdu1584 A strange lift (电梯最短路径问题)