问题 A: 猪八戒吃西瓜(wmelon)

时间限制: 1 Sec  内存限制: 64 MB
提交: 30  解决: 14
[提交][状态][讨论版]

题目描述

有一天,贪吃的猪八戒来到了一个大果园,果园里有n(n≤100000)个大西瓜,每个西瓜 的质量不大于长整型(longint),并且每个西瓜的质量都不同。猪八戒非常无聊,先把所有的西瓜按从小到大排列,然后再选m(m≤l00000)个质量是Ki的西瓜,请你帮他把想吃的西瓜找出来。

输入

第1行输入n,然后以下n行输入n个整数;
接着输入m,然后以下m行,每行一个整数Ki。

输出

输出m行,每行一个整数,表示重新排列后,Ki在这N个数中的位置。

样例输入

3
132
123
145
1
123

样例输出

1
解题思路:距离上一次做题已经一星期了,主要是因为题做不下去了,基础太弱,稍微复杂点的算法题就做不出来了,由于心比较浮躁,算法也看不懂。。。要时刻提醒自己:保持一颗平静的心!!
  这个题里面的输出说:表示重新排列后,ki在里面的位置,让我误以为每取一次后面的数字都得减1!!!然后提交两遍不对。
  然后zxp提醒后,改完提交AC了。
  由于数据量太多,不能每取一个就查找一次,那样即使用二分查找也得nlogn,也是比较大的。
  最好的方法是只查找一次:将查找的数字从小到大排序,然后从已排好序的西瓜里开始找,找到一个后接着从上一个的位置开始找就可以,这样时间复杂度是n;
  例:西瓜: 2 3 5 7 8 9 设置一个i;
要查找的排好序: 3 8 设一个j;
  j=1的时候,i从1到3所在下标;j=2时,i从3的下标到8的下标,查找完后i从1到n;
  然后再按输入顺序排序,输出排序后的下标即可。 代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib> using namespace std; struct node{
long int k;
long int ksortw;
long int kcinw;
};
node xigua[]; int comp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
} int cmp(node a,node b){
return a.k<b.k;
} int cmp2(node a,node b){
return a.kcinw<b.kcinw;
} int main()
{
long int n;
long int a[];
long int m; long int cou=;
scanf("%ld",&n);
for(long int i=;i<=n;i++){
scanf("%ld",&a[i]);
}
qsort(a+,n,sizeof(long int),comp);
scanf("%ld",&m);
for(long int i=;i<=m;i++){
scanf("%ld",&xigua[i].k);
xigua[i].kcinw=i;
}
sort(xigua+,xigua+m+,cmp);
long int i=;
long int j=;
while(){
if(j==m+){
break;
}
if(a[i]==xigua[j].k){
//printf("%ld\n",i);
xigua[j].ksortw=i;
j++;
}else{
i++;
}
}
sort(xigua+,xigua+m+,cmp2);
for(int i=;i<=m;i++){
printf("%d\n",xigua[i].ksortw);
} return ;
}
 

猪八戒吃西瓜(wmelon)-排序-查找的更多相关文章

  1. 猪八戒吃西瓜(wmelon)

    猪八戒吃西瓜(wmelon) 题目描述 有一天,贪吃的猪八戒来到了一个大果园,果园里有n(n≤100000)个大西瓜,每个西瓜 的质量不大于长整型(longint),并且每个西瓜的质量都不同.猪八戒非 ...

  2. Sublime文本排序&查找重复行&删除重复行

    排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...

  3. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  4. C/C++ 排序&&查找算法(面试)

    一.排序 1.冒泡排序 void BubbleSort(int array[],int n) { ; ; ; ; ;i<n - ;i++) /*外循环控制排序的总趟数*/ { flag = ; ...

  5. javascript排序 查找算法大全

    在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍.为了加深印象,特意把里面的常用的排序.查找算法用js写了一遍 具体的实例在我的github上,大家可以访问的: http ...

  6. 深入JDK源码之Arrays类中的排序查找算法(转)

    原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...

  7. [Day7]循环、数组方法、排序查找

    1. ASCII(American Standard Code for Information Interchange) (1)数字0-9对应ASCII编码十进制为48-57, 字母a-z对应ASCI ...

  8. Java常用的排序查找算法

    public static void main(String[] args) {      // bubbleSort(); // int[] a = {20,2,10,8,12,17,4,25,11 ...

  9. python排序查找

    无序表查找 def seq_search(lst, key): found = False pos = 0 while pos < len(lst) and not found: if lst[ ...

随机推荐

  1. yii2URL美化

    yii2的url 域名/index.php?r=site%2Findex 实际为 域名/index.php?r=site/index 可以美化下 可以在main.php中配置 'components' ...

  2. BZOJ-1003 物流运输trans SPFA+DP

    傻逼错误耗我1h,没给全范围坑我1A.... 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MB Submit: 529 ...

  3. HackerRank Ice Cream Parlor

    传送门 Ice Cream Parlor Authored by dheeraj on Mar 21 2013 Problem Statement Sunny and Johnny together ...

  4. UVA1262Password(第K字典序)

    题目链接 紫书P323 题意:两个6*5的字母矩阵,两个矩阵每列相同的字母,每列取一个,求按照字典序第k小的序列 分析: 对于第一个样例来说,我们得到{ACDW}.{BOP}.{GMOX}.{AP}. ...

  5. 高德地图3D版的使用方法

    坐标拾取器: http://lbs.amap.com/console/show/picker 其经纬度与LatLng()方法中的经纬度是对调的 SDK和实例下载: http://lbs.amap.co ...

  6. 如何使用网盘托管git项目

    话说近年来git已经成为项目源代码管理的标准工具,有不少免费托管网站可供使用,详情参考这篇文章: http://www.cnblogs.com/zdz8207/archive/2012/05/20/2 ...

  7. asp.net修改web.config文件

    private void UpdateConfigFile() { var cfg = System.Web.Configuration.WebConfigurationManager.OpenWeb ...

  8. Mongodb c#增删改查

    写在前面 最近项目需要,就研究了下mongodb,也是为了快速上手,就自己弄了一个简单的例子,这里记录一下. Mongodb 传统的关系数据库一般由数据库(database).表(table).记录( ...

  9. GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术

    GPRS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可 ...

  10. MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)

    MD5 编辑 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321( ...