【2017中国大学生程序设计竞赛-哈尔滨站】B - K-th Number
原题:


题意:
给你一个长度为N的正整数组A,对于这个数组的所有子区间,若长度小于k则不管它,若长度大于等于k则取第k大放入数组B
问你B中第M大的数是谁
一眼序列分治,然而没思路
数据结构?能想到从大到小排序,然后小于第i个数的都视为1,用数据结构维护第i个数在多少个区间是第k大
然后就没有然后了……
序列分治和数据结构自闭了两个小时,最后才想起来试试别的思路
比如DP或二分什么的
终于灵稽一动
答案满足二分单调性
二分的答案m越大,[m+1,n]中的数作为第k大的区间的总数量就越大
那么二分一个答案m,问题转化为求[m+1,n]中的数作为第k大的区间的总数量
因为只需要[m+1,n]中的任意一个数作为第k大,而[1,m]的数没有任何用,可以无视
那么可以把大于m的数看成1,小于等于m的数k看成0
问题转化为统计有多少个子区间,使得区间内有k个1
只需要O(n)复杂度,可以双指针,左边指针i每次加1,如果经过1就让区间中1的减1,如果1的个数小于k,就让右边的指针j往右跑到刚好等于k为止,把n-j+1统计到结果即可
注意二分的写法,容易写错
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define LL long long
int rd(){int z=,mk=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mk=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mk;
}
int n,o; LL m;
int a[];
int b[];
LL cclt(int x){
for(int i=;i<=n;++i) b[i]=(a[i]>=x);
LL bwl=;
for(int i=,j=,k=;i<=n && j<=n;++i){
for(;k!=o && j<n;) k+=b[++j];
if(j>n || (j==n && k!=o)) break;
bwl+=n-j+;
k-=b[i];
}
return bwl;
}
int bnrsch(int x,int y){
int l=x,r=y,md;
while(l+<r){
md=(l+r)>>;
(cclt(md)>=m ? l : r)=md;
}
return cclt(r)>=m ? r : l;
}
int main(){
//freopen("ddd.in","r",stdin);
int T; cin>>T;
while(T --> ){
cin>>n>>o>>m;
int mx=,mn=;
for(int i=;i<=n;++i){
a[i]=rd();
mx=max(mx,a[i]);
mn=min(mn,a[i]);
}
printf("%d\n",bnrsch(mn,mx));
}
return ;
}
【2017中国大学生程序设计竞赛-哈尔滨站】B - K-th Number的更多相关文章
- HDU6237-A Simple Stone Game-找素因子(欧拉函数)-2017中国大学生程序设计竞赛-哈尔滨站-重现赛
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDU6235-Permutation-水题-2017中国大学生程序设计竞赛-哈尔滨站-重现赛
Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tot ...
- HDU 6237.A Simple Stone Game-欧拉函数找素因子 (2017中国大学生程序设计竞赛-哈尔滨站-重现赛)
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDU 6235.Permutation (2017中国大学生程序设计竞赛-哈尔滨站-重现赛)
Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tot ...
- 2017中国大学生程序设计竞赛-哈尔滨站 Solution
A - Palindrome 题意:给出一个字符串,找出其中有多少个子串满足one-half-palindromic 的定义 思路:其实就是找一个i, j 使得 以i为中轴的回文串长度和以j为中轴的 ...
- 2017中国大学生程序设计竞赛-哈尔滨站 A - Palindrome
Palindrome Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tota ...
- 2017中国大学生程序设计竞赛-哈尔滨站 H - A Simple Stone Game
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDU 6273.Master of GCD-差分数组 (2017中国大学生程序设计竞赛-杭州站-重现赛(感谢浙江理工))
Super-palindrome 题面地址:http://acm.hdu.edu.cn/downloads/CCPC2018-Hangzhou-ProblemSet.pdf 这道题是差分数组的题目,线 ...
- 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)
Deleting Edges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
随机推荐
- Nginx反向代理,Nginx的TCP/UDP调度器以及Nginx常见问题处理
nginx反向代理: 方案 使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址分别为192.168.4.5和192.168.2.5,两台Web服务器IP地址 ...
- 27.IP承载网容量仿真
接入,汇聚,核心 参考资料: 学堂在线,移动通信技术(2019秋)https://next.xuetangx.com/learn/SZIIT61031001367/SZIIT61031001367/1 ...
- 【Abode Air程序开发】移动设备、桌面和浏览器应用程序开发的差异
移动设备.桌面和浏览器应用程序开发的差异 在移动设备应用程序中使用 Spark 和 MX 组件的限制 移动设备应用程序在性能方面的注意事项 浏览器 将应用程序部署为 SWF 文件,以用于在浏览器中运 ...
- Linux通配符知识深度实践详解
注意:linux通配符和三剑客(grep.awk.sed)正则表达式是不一样的,因此,代表的意义也有较大的区别. 通配符一般用户命令行bash环境,而Linux正则表达式用于grep.sed.awk场 ...
- CWMP开源代码研究7——cwmp移植
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...
- [校内模拟赛T3]火花灿灿_二分答案_组合数学_贪心
火花灿灿 题目: 数据范围: 题解: 这个题真的是个神仙题. 我们对于每块石头维护一个$01$串. 这个$01$串的长度是操作次数. 如果$01$串的当前位是$1$,表示这次操作中当前石子被划分到了贡 ...
- java23种设计模式之五:代理模式
一.代理模式介绍 代理模式的定义:就是为一个接品(对象)提供一个代理的对象,并由这个代理对象控制对原对象的访问流程 其中代理又分为:静态代理和动态代理 静态代理:指的是自己要写一个代理类,或者用工具生 ...
- Redis(1.7)Redis高可用架构(理论篇)
[0]常用架构种类 (0.1)单机Redis (0.2)单纯的Redis主从复制 (0.3)哨兵Sentinel+Redis主从复制集群(实现高可用自动故障转移) (0.4)Redis Cluster ...
- ci框架读取上传的excel文件数据
原文链接: https://blog.csdn.net/qq_38148394/article/details/87921373 此功能实现使用到PHPExcel类库,PHPExcel是一个PHP类库 ...
- lnmp1.5部署laravel项目
毕竟laravel是十分有魅力的框架,忍不住想要深入的了解她,费话不多说,直入正题吧 1.composer切换国内镜像源:composer config -g repo.packagist compo ...