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_treap 总结

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

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

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

  4. poj 3225 间隙(横截面和填充操作)

    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. 线段树(区间操作) 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++程序设计 编程题#3 编程作业—文件操作与模板

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

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

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

随机推荐

  1. poj3414(bfs)

    题目链接:http://poj.org/problem?id=3414 题意:给你两个容器 A  B 问是否能够经过有限的步骤倒水,得到容量为 C 的水,输出最小的步数,同时输出每一步的操作.如果不能 ...

  2. HDOJ 5276 YJC tricks time multimap

    multimap的使用 YJC tricks time Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/262144 K ...

  3. 超炫HTML5 SVG聊天框拖拽弹性摇摆动画特效

    这是一款很有创意的HTML5 SVG聊天框拖拽弹性摇摆动画特效. 用户能够用鼠标点击或用手滑动聊天框上的指定区域,该区域会以很有弹性的弹簧效果拉开聊天用户列表.点击一个用户头像后.又以同样的弹性特效切 ...

  4. kafka解释三的具体:发展Kafka应用

    一个.整体外观Kafka 我们知道.Kafka系统有三大组件:Producer.Consumer.broker . producers 生产(produce)消息(message)并推(push)送给 ...

  5. 【Cocos2d-x 粒子系统】火球用手指飞起来

    程序: 创建球 sp1 = CCSprite::create("ball.png"); sp1->setPosition(ccp(10, visibleSize.height ...

  6. bc38 1002, bc39 1002

    比赛的时候是对于每个数,记录下来a[i], 并记录该树的下标hash[a[i]] 然后枚举a[i]的倍数,如果a[i]的倍数存在(设为k*a[i]),那么vis[k*a[i]]是不为0的 那么可以这样 ...

  7. 强联通块tarjan算法

    http://poj.org/problem?id=1236第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题1 ...

  8. WPS2012交叉引用提示word比wps这种强烈的更新参考

                WPS2012交叉引用技巧,word比wps这点强更新參考文献 到时生成仅仅有有一条线,好像WPS不能够,word能够,假设谁知道能够补充.^_^ 1.写论文,參考文献的改动非 ...

  9. Debug with Eclipse

    In this post we are going to see how to develop applications using Eclipse and Portofino 4. The trad ...

  10. URAL 1934 Black Spot --- 最短的简单修改

    右侧是1.维护的同时保持最短路p值至少,我有直接存款(1-p).该概率不满足,为了使这个值极大. #include <iostream> #include <cstdlib> ...