poj 4088:Set操作

时间:2021-07-24 22:51:13

poj 4088:集合运算


题目:(至于4089。那个问题做过。使用归并思想,所以没有写)

描写叙述

小张须要从一批数量庞大的正整数中挑选出第k小的数。由于数据量太庞大,挑选起来非常费劲,希望你能编程帮他进行挑选。

输入
第一行第一个是数据的个数n(10<=n<=106)。第二个是须要挑选出的数据的序号k(1<=k<=105),n和k以空格分隔;

第二行以后是n个数据T(1<=T<=109),数据之间以空格或者换行符分隔。
输出
第k小数(假设有同样大小的也进行排序。比如对1,2,3,8,8。第4小的为8。第5小的也为8)。
例子输入
10 5
1 3 8 20 2
9 10 12 8 9
例子输出
8

解题方案
借用于高速排序思想,查找第K小元素

代码

#include <iostream>
#include <fstream>
using namespace std; void main_solution();
void read_data( int *& data,int &n,int &k );
int min_k(int *data,int s,int e,int k); int main()
{
main_solution();
system("pause");
return 0;
} void read_data( int *& data,int &n,int &k )
{
ifstream reader;
reader.open( "data.txt" );
reader>>n;
reader>>k;
data = new int[n];
for(int i=0;i<n;i++)
{
reader>>data[i];
}
reader.close();
} int min_k(int *data,int s,int e,int k)
{
int t = s;
int another = e;
while(t != another)
{
if( t < another )
{
if( data[t] <= data[another] )
another --;
else
{
int d = data[another];
data[another] = data[t];
data[t] = d; d = another;
another = t;
t = d;
}
}
else
{
if( data[t] >= data[another] )
another ++;
else
{
int d = data[another];
data[another] = data[t];
data[t] = d; d = another;
another = t;
t = d;
}
}
} if( k == t-s+1 )
return data[t];
else if( k < t-s+1 )
return min_k(data,s,t-1,k);
else return min_k(data,t+1,e,k - (t-s+1)); } void main_solution()
{
int * data;
int n;
int k;
read_data(data,n,k);
cout<<min_k(data,0,n-1,k)<<endl;
}


poj 4088:Set操作的更多相关文章

  1. 数据结构--线段树--lazy延迟操作

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 53749   ...

  2. fhq&lowbar;treap 总结

    今天跟着zcg大神学了一发fhq_treap 发现在维护区间问题上fhq_treap不仅思维量小,而且代码量更小 是Splay的不错的替代品,不过至今还是有一些问题不能很好的解决 譬如查询某个数在序列 ...

  3. POJ C&plus;&plus;程序设计 编程题#4 字符串操作

    编程题#4: 字符串操作 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 给 ...

  4. poj 3225 间隙&lpar;横截面和填充操作&rpar;

    http://poj.org/problem?id=3225 一道题又做了一天. .这道题对我来说起初有N多难点. 1:区间的开闭怎样解决. . 2:如何把区间的交并补.对称差转化为对线段树的操作. ...

  5. Splay树(多操作)——POJ 3580 SuperMemo

    相应POJ题目:点击打开链接 SuperMemo Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 11309   Accept ...

  6. 线段树&lpar;区间操作&rpar; POJ 3325 Help with Intervals

    题目传送门 题意:四种集合的操作,对应区间的01,问最后存在集合存在的区间. 分析:U T [l, r]填充1; I T [0, l), (r, N]填充0; D T [l, r]填充0; C T[0 ...

  7. POJ 3225 Help with Intervals --线段树区间操作

    题意:给你一些区间操作,让你输出最后得出的区间. 解法:区间操作的经典题,借鉴了网上的倍增算法,每次将区间乘以2,然后根据区间开闭情况做微调,这样可以有效处理开闭区间问题. 线段树维护两个值: cov ...

  8. POJ C&plus;&plus;程序设计 编程题#3 编程作业—文件操作与模板

    编程题#3: 整数的输出格式 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 利 ...

  9. POJ C&plus;&plus;程序设计 编程题#2 编程作业—文件操作与模板

    编程题#2: 实数的输出格式 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 ...

随机推荐

  1. Java Programming Language Enhancements

    引用:Java Programming Language Enhancements Java Programming Language Enhancements Enhancements in Jav ...

  2. python--基础学习(六)sqlite数据库基本操作

    python系列均基于python3.4环境 1.新建数据表 新建表,命名为student(id, name, score, sex, age),id为关键字,代码如下: import sqlite3 ...

  3. &lbrack;ThinkPHP&rsqb;打开页面追踪调试

    页面追踪调试 要打开它,需要: 1.在配置文件中,加入配置项     'SHOW_PAGE_TRACE'=>true,     2.控制器中需要 class IndexController ex ...

  4. POJ 1836 Alignment

    Alignment Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11450 Accepted: 3647 Descriptio ...

  5. ApacheBench(ab)使用详解

    ab命令原理  Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力.  ab命令对发出负载的计算机要求很低,既不会占 ...

  6. php判断http头还是https头

    $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HT ...

  7. servelt乱码问题(tomcat服务端编码为ISO-8859-1)

    Post的编码决定机制: <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...

  8. python Logging的使用

    日志是用来记录程序在运行过程中发生的状况,在程序开发过程中添加日志模块能够帮助我们了解程序运行过程中发生了哪些事件,这些事件也有轻重之分. 根据事件的轻重可分为以下几个级别: DEBUG: 详细信息, ...

  9. 电脑右键新建excel工作表&comma;但是扩展名是&period;xls&comma;而不是&period;xlsx

    怀疑是因为之前安装了wps,然后又卸载了,导致的.上网查阅,如下: excel默认新建xls 不是我的问题 Excel 2010/2013/2016在鼠标右键新建xls或xlsx文件后,打开报错“无法 ...

  10. &lbrack;Docker&rsqb; 容器持久化数据的首选机制 Volume

    Volume 是 docker 容器生成持久化数据的首选机制.bind mounts 依赖主机机器的目录机构,volume 完全由 docker 管理.volume 较 bind mounts 有几个 ...