题目:10487 - Closest Sums

题目大意:给出一组数据,再给出m个查询的数字。

要求找到这组数据里的两个数据相加的和最靠近这个查询的数据,输出那两个数据的和。

解题思路:二分查找。这样找到的话。就输出查询的数值,可是要注意找不到的情况:这里最靠近的值不一定是在找不到的时刻的前一次数据。所以要维护最靠近的要查询数的数值。

代码:

#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
using namespace std; const int N = 1005;
int s[N];
int n, q; int min (const int a, const int b) { if (a == 0)
return b;
return abs(a - q) < abs (b - q)? a: b;
} int search () { int l = 0;
int r = n - 1;
int sum = 0;
while (l <= n - 1 && r >= 0 && l < r) { if (s[l] + s[r] < q) { sum = min (sum, s[l] + s[r]);
l++;
}
else if (s[l] + s[r] > q) { sum = min (sum , s[l] + s[r]);
r--;
}
else
return s[l] + s[r];
}
return sum;
} int main () { int m;
int t = 0;
while (scanf ("%d", &n), n) { for (int i = 0; i < n; i++)
scanf ("%d", &s[i]);
sort (s, s + n);
scanf ("%d", &m);
printf ("Case %d:\n", ++t);
for (int i = 0; i < m; i++) { scanf ("%d", &q);
printf ("Closest sum to %d is %d.\n", q, search ());
}
}
return 0;
}

uva:10487 - Closest Sums(二分查找)的更多相关文章

  1. UVA.10474 Where is the Marble ( 排序 二分查找 )

    UVA.10474 Where is the Marble ( 排序 二分查找 ) 题意分析 大水题一道.排序好找到第一个目标数字的位置,返回其下标即可.暴力可过,强行写了一发BS,发现错误百出.应了 ...

  2. UVa 10539 (筛素数、二分查找) Almost Prime Numbers

    题意: 求正整数L和U之间有多少个整数x满足形如x=pk 这种形式,其中p为素数,k>1 分析: 首先筛出1e6内的素数,枚举每个素数求出1e12内所有满足条件的数,然后排序. 对于L和U,二分 ...

  3. UVa 1152 和为0的4个值(二分查找)

    https://vjudge.net/problem/UVA-1152 题意:给定4个n元素集合A,B,C,D,要求分别从中选取一个元素a,b,c,d,使得a+b+c+d=0.问有多少种取法. 思路: ...

  4. UVA - 1152 4 Values whose Sum is 0问题分解,二分查找

    题目:点击打开题目链接 思路:暴力循环显然会超时,根据紫书提示,采取问题分解的方法,分成A+B与C+D,然后采取二分查找,复杂度降为O(n2logn) AC代码: #include <bits/ ...

  5. uva-10487 - Closest Sums

    暴力枚举后去重最后二分加推断找答案 #include<iostream> #include<map> #include<string> #include<cs ...

  6. uva11991(二分查找或map的应用)

    11991 - Easy Problem from Rujia Liu? Time limit: 1.000 seconds Easy Problem from Rujia Liu? Though R ...

  7. Python 递归和二分查找

    # 二分查找l1 = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def two_search( ...

  8. UVA1152- 枚举 /二分查找

    The SUM problem can be formulated as follows: given four lists A,B,C,D of integer values, compute ho ...

  9. <二分查找+双指针+前缀和>解决子数组和排序后的区间和

    <二分查找+双指针+前缀和>解决子数组和排序后的区间和 题目重现: 给你一个数组 nums ,它包含 n 个正整数.你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 ...

随机推荐

  1. [HDU3240]Counting Binary Trees(不互质同余除法)

    Counting Binary Trees Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. JZYZOJ1525 HAOI2012道路 堆优化的dijkstra+pair

    From Tyvj Guest ☆[haoi2012]道路                 描述 Description     C国有n座城市,城市之间通过m条单向道路连接.一条路径被称为最短路,当 ...

  3. BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂

    http://www.lydsy.com/JudgeOnline/problem.php?id=3231   和斐波那契一个道理在最后加一个求和即可 #include<cstdio> #i ...

  4. Vue组件深入了解(组件注册和Prop)

    一.组件名 自定义组件的名称强烈推荐遵循W3C规范中的方式:字母全小写且必须包含一个连字符. 二.全局注册和局部注册的区别 全局注册 Vue.component进行注册.全局注册的可以在任何创建的实例 ...

  5. 线性稳压器 (LDO)

    线性稳压器 (LDO) 当输出电压低于输入电压时,必须从负载电源和压降比来考虑要采用线性稳压器 (LDO) 或降压转换器 (Buck) 低压降线性稳压器 (LDO) 适合用在需求低噪讯.低电流和低压降 ...

  6. gdb -Mysql源代码级调试方法

    http://blog.csdn.net/hitzhang/article/details/5985474 gdb -q --batch --ex "set height 0" - ...

  7. linux开放关闭防火墙端口

    原文:http://blog.csdn.net/fengspg/article/details/21337617 1) 重启后生效 开启: chkconfig iptables on 关闭: chkc ...

  8. UltraEdit字体设置(fontlink大法)

    在网上游荡很久,查阅诸多资料,终于为UltraEdit选定了一套我喜欢的字体方案.这套字体方案是:英文字体使用Consolas,中文字体使用微软雅黑. 虽然说起来好像很清楚,但是因为在UltraEdi ...

  9. HTML5画:线、圆、矩形、渐变

    示例一:矩形 <!DOCTYPE html><head> <meta charset=utf-8> <title>HTML5画线.圆.矩形</ti ...

  10. nolock的使用

    在SQL Server 2005数据库查询时,为了提高查询的性能,我们往往会在表后面加一个nolock,或者是with(nolock),让数据库在查询时不锁定表,从而提高查询的速度.本文我们就介绍SQ ...