【HDU - 6231】K-th Number(二分,思维)

题干:

Alice are given an array A[1..N]A[1..N] with NN numbers. 

Now Alice want to build an array BB by a parameter KK as following rules: 

Initially, the array B is empty. Consider each interval in array A. If the length of this interval is less than KK, then ignore this interval. Otherwise, find the KK-th largest number in this interval and add this number into array BB. 

In fact Alice doesn't care each element in the array B. She only wants to know the MM-th largest element in the array BB. Please help her to find this number.

Input

The first line is the number of test cases. 

For each test case, the first line contains three positive numbers N(1≤N≤105),K(1≤K≤N),MN(1≤N≤105),K(1≤K≤N),M. The second line contains NN numbers Ai(1≤Ai≤109)Ai(1≤Ai≤109). 

It's guaranteed that M is not greater than the length of the array B. 

Output

For each test case, output a single line containing the MM-th largest element in the array BB.

Sample Input

2
5 3 2
2 3 1 5 4
3 3 1
5 8 2

Sample Output

3
2

题目大意:

有一个长度为N的序列A={a1,a2,a3.....aN},该序列有多个子区间,考虑所有长度大于等于K的区间,我们找出所有这些区间的第K大值b,这些b又组成了一个序列B,现在你需要求出序列B的的第M大值。

解题报告:

首先我们知道如果这个数是x的话,那>x的数都可以看成x,二分这个数之后,在check函数中看有多少个区间满足第K大的数是>=x的,我们如果把>=x的数都标记成1的话,也就是看有多少区间的1的个数是>=k的,这一点可以尺取完成。如果区间数>=M的话,说明需要调整左端点,同时需要记录答案。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
int a[MAX],b[MAX];
int qq[MAX],sum[MAX];
int n,k;
ll M;
int ok(int x) {ll sum = 0;for(int i = 1; i<=n; i++) qq[i] = a[i] >= x;int l = 1,r = 1,tmp = 0;while(l<=r && r<=n) {tmp += qq[r];while(tmp >= k && l<=r) {tmp -= qq[l];l++;}sum += l-1;r++;}
//	sum--;return sum>=M;
}
int main() {int t;cin>>t;while(t--) {scanf("%d%d%lld",&n,&k,&M);for(int i = 1; i<=n; i++) scanf("%d",a+i),b[i] = a[i];
//		int l = 0,r = *max_elememt(a+1,a+n+1);   这样不行 太大了。sort(b+1,b+n+1);int l=1,r=n,m,ans;while(l<=r) {int mid=(l+r)>>1;if(ok(b[mid])) l = mid+1,ans=mid;//else r = mid-1;}printf("%d\n",b[ans]);	}return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 语言运算符优先级(记忆口诀)

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 &#xff08;表达式&#xff09;/函数名(形参表) . 成员选择&#xff08;对象&#xff09; 对象.成员名 -> 成员选择&#xff08;指针&#xff0…

吴恩达机器学习作业(3):逻辑回归

目录 1&#xff09;数据处理 2&#xff09;sigmoid函数 3&#xff09;代价函数 4&#xff09;梯度下降 5&#xff09;预测函数 我们首先做一个练习&#xff0c;问题是这样的&#xff1a;设想你是大学相关部分的管理者&#xff0c;想通过申请学生两次测试的评分&#xff0c…

机器学习笔记(九):应用机器学习的建议

目录 1&#xff09;Deciding what to try next 2&#xff09;Evaluating a hypothesis 3&#xff09;Model selection and training/validation/test sets 4&#xff09;Diagnosing bias vs. variance 5&#xff09;Regularization and bias/variance 6&#xff09;Learn…

【洛谷 - P3410】拍照(最大权闭合图,网络流最小割)

题干&#xff1a; 题目描述 小B有n个下属&#xff0c;现小B要带着一些下属让别人拍照。 有m个人&#xff0c;每个人都愿意付给小B一定钱让n个人中的一些人进行合影。如果这一些人没带齐那么就不能拍照&#xff0c;小B也不会得到钱。 注意&#xff1a;带下属不是白带的&…

ROS有三个层级的概念,分别是:文件系统级、计算图级和开源社区级

ROS有三个层级的概念&#xff0c;分别是&#xff1a;文件系统级、计算图级和开源社区级。 文件系统级&#xff1a;ROS的内部结构、文件结构和所需的核心文件都在这一层里&#xff0c;理解ROS文件系统是入门ROS的基础。一个ROS程序的结构&#xff0c;是一些按不同功能进行区分的…

【洛谷 - P1231 】教辅的组成(网络流最大流,拆点)

题干&#xff1a; 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案&#xff0c;然而他却明明记得这书应该还包含一份练习题。然而出现在他眼前的书多得数不胜数&#xff0c;其中有书&#xff0c;有答案&#xff0c;有练习册。已知一个完整的书册均应该包含且仅包含一本书…

机器学习笔记(十):机器学习系统的设计

目录 1&#xff09;Prioritizing what to work on:Spam classification example 2&#xff09;Error analysis 3&#xff09;Error metrics for skewed classes 4&#xff09;Trading off precision and recall 5&#xff09;Data for machine learning 下面将学习到在构建…

ROS坐标系统,常见的坐标系和其含义

常见的坐标系 在使用ROS进行定位导航等操作时&#xff0c;我们经常会遇到各种坐标系。每种坐标系都有明确的含义。理论上坐标系的名称可以是随意的&#xff0c;但是为了方便不同的软件间共享坐标信息&#xff0c;ROS定义了几个常见的坐标系。 1.base_linkbase_link坐标系和机…

【洛谷 - P1345 [USACO5.4]】奶牛的电信(网络流最小割,拆点)

题干&#xff1a; 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系&#xff0c;于是她们建立了一个奶牛电脑网络&#xff0c;以便互相交流。这些机器用如下的方式发送电邮&#xff1a;如果存在一个由c台电脑组成的序列a1,a2,...,a(c)&#xff0c;且a1与a2相连&#xff0c;a2与…

机器学习笔记(十一):支持向量机

目录 1&#xff09;Optimization objective 2&#xff09;Large Margin Intuition 3&#xff09;Kernels 1 4&#xff09;Kernels II 5&#xff09;Using an SVM 注&#xff1a;这一章SVM可能有点难理解&#xff0c;强烈建议大家把本章的编程作业做了。 1&#xff09;Opt…

ros中的坐标系,

ros中的坐标系&#xff0c;主要包括&#xff1a; map&#xff0c;odom&#xff0c;base_link(base_footprint) 以及如laser&#xff0c;camera等传感器的坐标系&#xff1b; 这些坐标系间的关系可以用下图表示&#xff1a; 这是一个有向图&#xff0c;图中涉及四个坐标系&#…

【BZOJ - 3224】普通平衡树(Splay模板题)

题干&#xff1a; 您需要写一种数据结构&#xff08;可参考题目标题&#xff09;&#xff0c;来维护一些数&#xff0c;其中需要提供以下操作&#xff1a; 1. 插入x数 2. 删除x数(若有多个相同的数&#xff0c;因只删除一个) 3. 查询x数的排名(若有多个相同的数&#xff0c;因…

ROS中常见坐标系定义及基本单位

为了方便开发者代码复用&#xff0c;ROS中统一定义了常见的坐标系&#xff08;REP&#xff09;&#xff0c;所有的坐标系都是右手坐标系。 1. map --固定的世界坐标系&#xff0c;z轴垂直向上。在map中表示的移动平台的pose是没有drift&#xff0c;没有累计误差的。而且&…

【Gym - 101061F】Fairness(dp,思维)

题干&#xff1a; Dwik and his brother Samir both received scholarships from a famous university in India. Their father, Besher, wants to send some money with each of them. Besher has n coins, the ith coin has a value of ai. He will distribute these coins…

(2)连续存储数组的方法

目录 连续存储的代表应用&#xff1a;数组 1&#xff09;结构体的定义&#xff1a; 2&#xff09;基本操作 对数据进行初始化 判断数组是否为空 输出数组 判断数组是否满 追加元素 插入数组元素 删除数组元素 逆序 对数组进行排序 这篇笔记是根据郝斌老师的上课讲义…

什么是欧拉角/姿态角?

用一句话说&#xff0c;欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴&#xff09;的旋转角度。 在这里&#xff0c;坐标系可以是世界坐标系&#xff0c;也可以是物体坐标系&#xff0c;旋转顺序也是任意的&#xff0c;可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一种&#xff0c;甚至…

机器学习笔记(十二):聚类

目录 1&#xff09;Unsupervised learning introduction 2&#xff09;K-means algorithm 3&#xff09;Optimization objective 4&#xff09;Random initialization 5&#xff09;Choosing the number of clusters 1&#xff09;Unsupervised learning introduction 下…

ros amcl 参数配置

最近搞ros机器人定位&#xff0c;配置文件一堆参数官网只有简单说明&#xff0c;一脸懵逼&#xff0c;只能去看看算法&#xff0c;大概了解下。 以下是看《概率机器人》定位后的理解 <launch> <!-- by dyan1024//后为wiki官网的参数说明 &#xff08;&#xff09;中为…

【BZOJ - 3993】星际战争(网络流最大流+二分)

题干&#xff1a; 3333年&#xff0c;在银河系的某星球上&#xff0c;X军团和Y军团正在激烈地作战。在战斗的某一阶段&#xff0c;Y军团一共派遣了N个巨型机器人进攻X军团的阵地&#xff0c;其中第i个巨型机器人的装甲值为Ai。当一个巨型机器人的装甲值减少到0或者以下时&#…

Linux下root登陆mysql

错误如下&#xff1a; 1.停止mysql服务 #service mysql stop2.进入到skip-grant-tables模式&#xff1a; #mysqld_safe --skip-grant-tables3.root连接mysql数据库&#xff1a; #mysql -uroot -p如出现如下错误&#xff1a; 其实&#xff0c;原本就没有这个目录&#xff1…