K-th Number

K-th Number

https://ac.nowcoder.com/acm/problem/14301

K-th Number


突破口:直接考虑最后的B序列是一个由原序列中的数字多次或0次出现构成的序列,那么将B序列排序之后我们发现,对于每个数字出现的位置都有一个L,R,并且数字越小的其实排名越靠后,由这里我们就可以发现,最后的答案是满足二分性质的,所以我们可以直接二分Mst求出mid在B序列中的R即可.
这一部分可以用尺取法,即如果一个数要想对当前mid做出贡献,那么他所在的区间必须有>=k个比mid大的元素,所以将所有>=mid的元素看做一个,然后枚举右端点即可


#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define ls rt<<1
#define rs rt<<1|1
#define pb push_back
#define fi first
#define se second
#define mkp make_pair
#define yes puts("YES")
#define no puts("NO")
#define ios ios::sync_with_stdio(0);
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
typedef vector<int> VI;
const int maxn = 3e5 + 6;
const LL inf = 0x3f3f3f3f3f3f3f3f;
const int mod = 998244353;
LL qp(LL x,LL y){LL ans=1;x%=mod;while(y){if(y&1) ans=ans*x%mod;x=x*x%mod;y>>=1;}return ans;}
LL inv(LL x){return qp(x,mod-2);}

//head
LL _,n,m,k,a[maxn],b[maxn];
bool ok(LL x){
    vector<LL>v;
    for(int i=1;i<=n;i++) if(b[i]>=x) v.pb(i);
    v.pb(n+1);
    int sz=v.size();
    LL ans=0;
    for(int i=0;i<=sz-k-1;i++){
        LL l=v[i],r=v[i+k]-v[i+k-1];
        ans+=l*r;
    }
    return ans>=m;
}

int main(){
    for(scanf("%lld",&_);_;_--){
        scanf("%lld%lld%lld",&n,&k,&m);
        for(int i=1;i<=n;i++) scanf("%lld",&a[i]),b[i]=a[i];
        sort(a+1,a+1+n,greater<LL>());
        int l=1,r=n,ans=-1;
        while(l<=r){
            int mid=l+r>>1;
            if(ok(a[mid])) {r=mid-1;ans=mid;}
            else l=mid+1;
        }
        printf("%d\n",a[ans]);
    }

}
全部评论

相关推荐

序&nbsp;朋友们,好久不见。&nbsp;笔者在过去消失的五个月里被困在情绪牢笼中过的相当煎熬,一度丢失自己,觉得整个世界都是昏暗的。&nbsp;庆幸的是靠着自己纯硬扛也是走出来了。表达欲再度回归,所以真的很开心还有机会能在再和大家见面。&nbsp;破碎秋招&nbsp;抑郁情绪的引爆点必然是秋招期间遭受的打击了,从去年九月份腾讯转正被告知失败之后就开始疯狂投递简历,每天都在经历:简历挂、一面挂、二面挂、三面挂、HR面挂,每天睁开眼就被无所适从的挫败感包围。&nbsp;秋招的特点是即便流程走到最后一步也不一定会&nbsp;offer,因为还需要进入大池子进行横向对比,俗称泡池子,而这一泡我的大多数面试流程到后面就没了后文,这一度让我感觉非常绝望。我深知自己学历并...
SoNiC_X:我已经工作快2年了,当时高考没考好没去到想去的学校,觉得天要塌了;校招找不到工作,觉得天要塌了;现在工作觉得看不到未来,觉得天要塌了;最近最大的感悟就是:天会一直塌,但是生活也会一直继续下去,还是要调整好自己的心态,不要因为一时的困难把自己困住,要记住完蛋的日子永远在后头
点赞 评论 收藏
分享
03-02 10:51
邵阳学院 Java
红鲤鱼与绿鲤鱼i:看了你的头像不像找工作,像在找妹子
点赞 评论 收藏
分享
牛客10001:有可能被捞,我投的后端被前端捞起来了
投递美团等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务