hdu6231

题意

给出一些数字,对于任意长度不小于 \(k\) 的区间,把第 \(k\) 大数加入到一个新的数组 \(B\) 中,求 \(B\) 数组第 \(m\) 大数。

分析

二分答案 \(x\) ,枚举左端点 \(l\) ,找到最小的 \(r\) 使得区间 \([l,r]\) 中有至少 \(k\) 个数大于等于 \(x\),那么右端点的取值个数为 \(n-r+1\),尺取法维护下,将右端点的个数累加求和。如果和大于等于 \(m\) 说明答案一定大于等于 \(x\) 否则一定小于 \(x\) 。

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e5 + 10;
int a[MAXN], n, k;
ll m;
ll check(int x) {
int r = 0, s = 0;
ll res = 0;
for(int i = 0; i < n; i++) {
while(r < n && s < k) {
if(a[r] >= x) s++;
r++;
}
if(s == k) res += n - r + 1;
if(a[i] >= x) s--;
}
return res;
}
int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%d%d%lld", &n, &k, &m);
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int l = 0, r = 1e9, ans = 0;
while(l <= r) {
int mid = l + r >> 1;
if(check(mid) >= m) {
ans = mid;
l = mid + 1;
} else r = mid - 1;
}
printf("%d\n", ans);
}
return 0;
}

hdu6231的更多相关文章

  1. HDU 6231 (K-th Number)

    题目链接:https://cn.vjudge.net/problem/HDU-6231 思路:二分+双指针: #include <stdio.h> #include <iostrea ...

随机推荐

  1. FAQ: SNMP on NetScaler Appliance

    FAQ: SNMP on NetScaler Appliance https://support.citrix.com/article/CTX122436 https://docs.citrix.co ...

  2. BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】

    题目链接 BZOJ5343 题解 明显要二分一下美味度,然后用尽量少的价格去购买饮料,看看能否买到\(L\)升,然后看看能否控制价格在\(g\)内 尽量少的价格,就优先先选完便宜的饮料,由于询问的是一 ...

  3. 【bzoj2141】排队 [国家集训队2011]排队(魏铭) 树套树 线段树套替罪羊树

    这个题就是动态偏序对,每次操作做两个删除两个插入就好了. #include<cstdio> #include<iostream> #include<cstring> ...

  4. 2018 BAT最新 php面试必考题

    收集一些实用php面试题及答案给大家 做为程序员,到IT企业面试的时候肯定会有笔试这关,那就要考考你的PHP知识了,所以本站收集一些实用的php面试题及答案给大家.  基础题:  1.表单中 get与 ...

  5. MySQL DELAY_KEY_WRITE Option

    delay_key_write   This option applies only to MyISAM tables. It can have one of the following values ...

  6. PAT团体程序设计大赛---(模拟)

    L1-1 古风排版(20 分) 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行 ...

  7. 教主泡嫦娥(RQNOJ 595)

    题目描述 [问题背景] 2012年12月21日下午3点14分35秒,全世界各国的总统以及领导人都已经汇聚在中国的方舟上. 但也有很多百姓平民想搭乘方舟,毕竟他们不想就这么离开世界,所以他们决定要么登上 ...

  8. 【Foreign】冒泡排序 [暴力]

    冒泡排序 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 4 5 ...

  9. HDU1003MAX SUM (动态规划求最大子序列的和)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  10. 微信小程序登录流程图

    一. 官方登录时序图 官方的登录时序图 二. 简单理解 这里仅按照官方推荐的规范来 0. 前置条件 一共有三端: - 微信小程序客户端 - 第三方服务器端- 微信服务器端 1. 客户端获得code,并 ...