两数组最短距离

点我挑战题目

题意分析

给出2个数组,让求出2个数组元素差的绝对值的最小值是多少。

我这里是o(m+n)的算法。首先对于第一个数组,让他的第一个元素和第二个元素比较,如果他的第一个元素比另一个数组的第一个元素大,那么首先记录一下差值,然后判断数组的下一个元素(即i++)。反之判断记录差值并且判断另一个数组的下一个元素(j++),直到将两个数组都遍历一遍,差值所保存的结果是就是最后的最短距离。

当然还有o(n*m)的算法。那就是暴力,将第一个数组的第一个元素依次和第二个数组的每个元素做差值比较,然后记录最小值;接着计算第二个元素和第二个数组的每个元素的差值,并记录最小值,直到遍历完第一个数组,输出差值即可。

/*
Title:AOJ.176
Author:pengwill
Date:2016-11-28
*/
#include <stdio.h>
#include <stdio.h>
#include <math.h>
#define max 1005
int main()
{
int m,n;
int a1[max],a2[max];
while(scanf("%d %d",&n,&m) != EOF){
int i;
for(i = 0;i<n;i++){
scanf("%d",&a1[i]);
}
for(i = 0;i<m;i++){
scanf("%d",&a2[i]);
}
int j,ret ;
i = j = 0;
ret = -1;
while(i<n&&j<m){
if(a1[i]>a2[j]){
if(ret == -1 || ret > fabs(a1[i]-a2[j])){
ret = fabs(a1[i]-a2[j]);
}
j++;
}else if(a1[i]<a2[j]) {
if(ret == -1 || ret > fabs(a1[i]-a2[j])){
ret = fabs(a1[i]-a2[j]);
}
i++;
}else if(a1[i] == a2[j]) {
ret = 0;
break;
}
}
printf("%d\n",ret);
}
return 0;
}

AOJ.176 两数组最短距离 (乱搞题)的更多相关文章

  1. CF_402C Searching for Graph 乱搞题

    题目链接:http://codeforces.com/problemset/problem/402/C /**算法分析: 乱搞题,不明白题目想考什么 */ #include<bits/stdc+ ...

  2. codeforces 653C C. Bear and Up-Down(乱搞题)

    题目链接: C. Bear and Up-Down time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  3. codeforces 664B B. Rebus(乱搞题)

    题目链接: B. Rebus time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  4. codeforces 669D D. Little Artem and Dance(乱搞题)

    题目链接: D. Little Artem and Dance time limit per test 2 seconds memory limit per test 256 megabytes in ...

  5. HDU5764 After a Sleepless Night 树形乱搞题

    分析(官方题解): 假设根已确定,可以发现新树若合法,需满足以下性质:根节点是n:儿子的值不大于父亲:具有相同值的节点形成一条链,并且链不会发生“分叉”(即有多个最低点).所以对于新树中有出现的值x, ...

  6. AT2386 Colorful Hats (乱搞题,思维题)

    分情况讨论的神题... max不等于min + 1 或者不等于min,这种情况显然不存在. 如果都等于一个数 有两种情况: 互相独立,那么a[i]肯定==n-1 有相同的,那么a[i]一定不是独立的. ...

  7. hdu 4112 Break the Chocolate(乱搞题)

    题意:要把一块n*m*k的巧克力分成1*1*1的单元,有两种操作方式:1,用手掰(假设力量无穷大),每次拿起一块,掰成两块小的:2,用刀切(假设刀无限长),可以把多块摆在一起,同时切开.问两种方式各需 ...

  8. hdu-5676 ztr loves lucky numbers(乱搞题)

    题目链接: ztr loves lucky numbers  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K ( ...

  9. hihocoder 1236(2015北京网络赛 J题) 分块bitset乱搞题

    题目大意: 每个人有五门课成绩,初始给定一部分学生的成绩,然后每次询问给出一个学生的成绩,希望知道在给定的一堆学生的成绩比这个学生每门都低或者相等的人数 因为强行要求在线查询,所以题目要求,每次当前给 ...

随机推荐

  1. 基于阿里云服务器Linux系统安装配置Redis

    一.Redis简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(有 ...

  2. Centos 7 快速安装 Docker

    摘要: 安装 Docker [root@localhost~]# yum install docker 启动 docker 服务 [root@localhost~]# systemctl start ...

  3. 苏醒的巨人----CSRF

    一.CSRF 跨站请求伪造(Cross-Site Request Forgery,CSRF)是指利用 受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点 击恶意链接或者访问包含攻击代码的页 ...

  4. TPO-14 C2 Prepare for a career in journalism

    TPO-14 C2 Prepare for a career in journalism 第 1 段 1.Listen to a conversation between a student and ...

  5. [JSON].set(keyPath, value)

    语法:[JSON].set( keyPath, value ) 返回:[True | False] 说明:设置键值 参数: keyPath    [keyPath 必需] 键名路径字符串 value ...

  6. LeetCode 445——两数相加 II

    1. 题目 2. 解答 2.1 方法一 在 LeetCode 206--反转链表 和 LeetCode 2--两数相加 的基础上,先对两个链表进行反转,然后求出和后再进行反转即可. /** * Def ...

  7. 实战小项目之ffmpeg推流yolo视频实时检测

    之前实现了yolo图像的在线检测,这次主要完成远程视频的检测.主要包括推流--収流--检测显示三大部分 首先说一下推流,主要使用ffmpeg命令进行本地摄像头的推流,为了实现首屏秒开使用-g设置gop ...

  8. 文件操作---基于python

    # coding:utf-8from time import sleepimport sysreload(sys)sys.setdefaultencoding("utf8")f=o ...

  9. Linux 应用笔记

    Linux 应用笔记 Linux 应用笔记 小书匠 Raspberry Pi 常用命令 CentOs Raspberry Ubuntu python 实用教程 Vim 权限问题 内存分配 shell ...

  10. Android 网络编程 API笔记 - java.net 包相关 接口 api

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...