njupt(1406-第K小的数)

2024-05-26 00:58
文章标签 1406 njupt

本文主要是介绍njupt(1406-第K小的数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第K小的数

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 101            测试通过 : 30 

比赛描述

你为SKZ公司的数据结构部门工作,你的工作是重新写一个程序,这个程序能快速地找到一段数列中第k小的数。

就是说,给定一个整数数列a[1..n],其中每个元素都不相同,你的程序要能回答一组格式为Q (i , j , k)的查询,Q(i, j ,k)的意思是“在a[i..j]中第k小的数是多少?”

例如令 a = {1, 5, 2, 6, 3, 7, 4},查询格式为Q (2 , 5 , 3),数列段a[2..5] = {5, 2, 6, 3},第3小的数是5,所以答案是5。



输入

第一行包括一个正整数n,代表数列的总长度,还有一个数m,代表有m个查询。n、m满足:1≤n≤100 000,1≤m≤5 000。

第二行有n个数,代表数列的元素,所有数都不相同,而且不会超过109 。

接下来有m行,每行三个整数i、j、k,代表一次查询,i、j、k满足:1≤i≤j≤n, 1≤k≤j−i+1。

输出

输出每个查询的答案,用换行符隔开。

样例输入

7 3
1 5 2 6 3 7 4
2 5 3
4 4 1
1 7 3

样例输出

5
6
3

代码超时(参考网上的伴随矩阵的用法)

http://blog.csdn.net/v_JULY_v/article/details/6452100

#include<iostream>  
#include<algorithm>  
using namespace std;  struct node{  int num,data;  bool operator < (const node &p) const   {  return data < p.data;  }  
};  
node p[100001];  int main()  
{  int n,m,i,j,a,b,c;while(scanf("%d %d",&n,&m)!=EOF)   {  for(i=1;i<=n;i++)   {  scanf("%d",&p[i].data);  p[i].num = i;  }  sort(p+1,p+1+n);  for(j=1;j<=m;j++)   {  scanf("%d %d %d",&a,&b,&c);  for(i=1;i<=n;i++)   {  if(p[i].num>=a && p[i].num<=b)   c--;   if(c == 0)   break;  }  printf("%d\n",p[i].data);  }  }  return 0;  
} 



这篇关于njupt(1406-第K小的数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003114

相关文章

hdu-1406-完数

//法一 #include<stdio.h> int wanshu(int a,int b) {  int i,j,m,sum;  m=0;  for(i=a;i<=b;i++)  {   sum=0;   for(j=1;j<i;j++)    if(i%j==0)     sum+=j;    if(sum==i)     m++;  }  return m; } int main() {

最小生成树问题:njupt-1418:清扫

清扫 时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 6            测试通过 : 5  比赛描述 现在要打扫国王的牧圈。已经30年没打扫了。所以这次的计划是用河水来冲。 牧圈排成整齐的格子,每相邻的两个之间都有门。要想让水进去,就必须打开这些门。这不是件容易的事情。因为有些圈里

njupt-胜负问题||

胜负问题II 时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 541            测试通过 : 85  题目描述 “华为杯”南邮大学生团体歌唱大赛重燃战火,本次2014年大赛由南京邮电大学大学生就业与创业指导中心主办,南京邮电大学华为俱乐部(Huawei@NUPT Club)

【TWVRP】基于matlab蚁群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1406期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划(Matlab) 神经网络预测与分类(Matlab) 优化求解(Matlab) 语音处理(Matlab

HDU 1406 完数 (数论)

完数 http://acm.hdu.edu.cn/showproblem.php?pid=1406 Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/32768 K (Java/Others) Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它

天勤OJ 题目1406: 计算天数

题目描述 输入年月日,计算该填是本年的第几天。例如1990 年9 月20 日是1990 年的第263 天, 2000 年5 月1 日是2000 年第122 天。(闰年:能被400 <

zun.common.exception pymysql.err.DataError 1406, “Data too long for column ‘exposed_ports‘ at row 1“

openstack中管理容器暴露范围端口,转换为单个端口,端口暴露包括 tcp和udp 协议,出现个数过多,数据过长,zun-api请求报错如下: 2021-10-21 19:14:49.926 2925 ERROR zun.common.exception [req-b037140d-79d6-4a91-9fcd-926321baf4b1 - - - - -] ab065d5e-faf3-4e

zoj - 1406 - Jungle Roads

题意:有n个村庄,村庄间有一些路,但有一些路可以不要也可连通所有村庄,为节约费用,deal with一些不必要的路,求最少维护总费用。 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=406 ——>>用Kruskal算法生成一棵最小生成树,输出即可。 #include <iostream>#include

NJUPT面向对象程序设计及C++mooc编程(第七章)--by sCh3n

来啦来啦第七章的编程题来辽 第一题 定义函数模板int Search(T list[],int n,T key);实现在在数组list的前n个元素中查找关键字key,若找到,返回对应元素下标,否则返回-1(10分) 题目内容:定义函数模板int Search(T list[],int n,T key);实现在在数组list的前n个元素中查找关键字key,若找到,返回对应元素下标,否则返回-1

NJUPT面向对象程序设计及C++mooc编程(第二章)--by sCh3n

第一题 编写一个C++风格的程序,输入半径radius,当radius为正数时,输出其面积area和周长circumference;否则,输出提示信息error input! 具体要求如下: ①所有变量均定义为double类型; ②输出面积和周长用语句:cout<<area<<" "<<circumference<<endl; ③输出提示信息用语句:cout<<"error input!