uva-10487 – Closest Sums

uva-10487 – Closest Sums

大家好,又见面了,我是全栈君。

暴力枚举后去重最后二分加推断找答案

#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
	int count=0;
	int t,m,i,n,j;
	int a[1010];
	while(cin>>n&&n)
	{
		printf("Case %d:\n",++count);
		vector<int>box;
		for(i=0;i<n;i++)
			cin>>a[i];
		for(i=0;i<n;i++)
			for(j=i+1;j<n;j++)
				box.push_back(a[i]+a[j]);
		sort(box.begin(),box.end());
		box.erase(unique(box.begin(),box.end()),box.end());
		cin>>m;
		n=box.size();
		while(m--)
		{
			cin>>t;
			i=lower_bound(box.begin(),box.end(),t)-box.begin();
			if(i==n)
				i--;
			else if(i>0)
				if(abs(box[i]-t)>abs(box[i-1]-t))
					i--;
			printf("Closest sum to %d is %d.\n",t,box[i]);
		}
	}
	return 0;
}

Problem D
Closest Sums
Input: standard input
Output: standard output
Time Limit: 3 seconds

 

Given is a set of integers andthen a sequence of queries. A query gives you a number and asks to find a sum oftwo distinct numbers from the set, which is closest to the query number.

Input

Input contains multiple cases.

Each case starts with an integer n(1<n<=1000), which indicates, how many numbers are in the set of integer.Next n lines contain n numbers. Of course there is only one number in a singleline. The next line contains a positive integer m giving the number ofqueries, 0 < m < 25. The next m lines contain aninteger of the query, one per line.

Input is terminated by a case whose n=0. Surely,this case needs no processing.

Output

Output should be organized as in the samplebelow. For each query output one line giving the query value and the closestsum in the format as in the sample. Inputs will be such that no ties will occur.

Sample input

5

3
12
17
33
34
3
1
51
30
3
1
2
3
3
1
2
3

3

1
2
3
3
4
5
6
0

Sample output

Case 1:
Closest sum to 1 is 15.
Closest sum to 51 is 51.
Closest sum to 30 is 29.
Case 2:
Closest sum to 1 is 3.
Closest sum to 2 is 3.
Closest sum to 3 is 3.
Case 3:
Closest sum to 4 is 4.
Closest sum to 5 is 5.
Closest sum to 6 is 5.


Piotr Rudnicki

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115557.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 知识图谱构建技术综述-2.3知识推理-学习笔记「建议收藏」

    知识图谱构建技术综述-2.3知识推理-学习笔记「建议收藏」文章信息:文章末尾目录2.3节知识推理2.3.1基于规则的推理2.3.2基于分布式特征表示推理(1)基于翻译模型的知识推理(2)基于张量分解的知识推理(3)基于语义匹配模型的知识推理2.3.3基于深度学习的推理2.3节知识推理知识推理:根据已有的实体关系来推断出新的事实结论。知识推理研究分析分为3种:2.3.1基于规则的推理包含:谓词逻辑推理、本体推理和随机推理。【63】等提出一阶归纳学习就是谓词逻辑推理,可以自动提取高质量的事实并去噪

  • python官网下载步骤-Python 下载及安装详细步骤

    python官网下载步骤-Python 下载及安装详细步骤安装python分三个步骤:*下载python*安装python*检查是否安装成功1、下载Python(2)选择下载的版本(3)点开Download后,找到下载文件Gzippedsourcetarball是Linux系统下载的版本XZcompressedsourcetarball是CentOS系统下载的版本注意Linux和CentOS自带python,一般不用再下载python。ma…

  • slam的核心技术有哪些_遥感技术在农业领域的应用

    slam的核心技术有哪些_遥感技术在农业领域的应用当今科技发展速度飞快,想让用户在AR/VR、机器人、无人机、无人驾驶领域体验加强,还是需要更多前沿技术做支持,SLAM就是其中之一。实际上,有人就曾打比方,若是手机离开了WIFI和数据网络,就像无人车和机器人,离开了SLAM一样。什么是SLAMSLAM的英文全称是SimultaneousLocalizationandMapping,中文称作「同时定位与地图创建」。SL…

  • 作业2 分析TGA文件「建议收藏」

    一、TGA文件格式解析二、文件格式文件头(TgaFileHeader):由图像描述信息字段长度、颜色表类型、图像类型、颜色表说明和图像说明五个字段组成,总计18字节,描述了图像存储的基本信息,应用程序可依据该部分字段值读写图像数据。图像/颜色表数据(Image/ColorMapData):由图像描述信息(可选)、颜色表数据和图像数据三部分组成,用于存储图片的图像信息。开发者自定义区域(DeveloperArea):包含开发者定义字段列表和开发者字典(用于存储开发者定义字段的值),该区域为

  • python 匹配字符串开头和结尾

    python 匹配字符串开头和结尾python匹配字符串开头和结尾

  • yum 命令讲解「建议收藏」

    yum 命令讲解「建议收藏」(一)yum介绍Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 …

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号