Input示例
8 9
-1
6
5
3
4
2
9
0
8
Output示例
-1 9
0 8
2 6
3 5

first try:

#include "bits/stdc++.h"
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f3f
#define PI acos(-1)
#define N 50010
int arr[N];
int main()
{
int n,k;
while(~scanf("%d%d",&k,&n)){
for(int i=;i<n;i++){
scanf("%d",&arr[i]);
}
sort(arr,arr+n);
int c=;
for(int i=;i<n;i++){
for(int j=i+;j<n;j++){
if(arr[i]+arr[j]==k){
printf("%d %d\n",arr[i],arr[j]);
c++;
}
}
}
if(!c){
printf("No Solution\n");
}
}
return ;
}

O(n^2)

Time limit exceeded,优化

second try:

第二层从后向前找,及时跳出

#include "bits/stdc++.h"
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f3f
#define PI acos(-1)
#define N 50010
int arr[N];
int main()
{
int n,k;
while(~scanf("%d%d",&k,&n)){
for(int i=;i<n;i++){
scanf("%d",&arr[i]);
}
sort(arr,arr+n);
int c=;
for(int i=;i<n;i++){
for(int j=n-;j>=i+;j--){
if(arr[i]+arr[j]==k){
printf("%d %d\n",arr[i],arr[j]);
c++;
break;
}
}
}
if(!c){
printf("No Solution\n");
}
}
return ;
}

Time limit exceeded,再优化

third try:

转换思维,查找互补数是否存在,二分查找,分治

#include "bits/stdc++.h"
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f3f
#define PI acos(-1)
#define N 50010
int arr[N];
int Find(int n,int x){
int r=n-,l=,m;
while(l<=r){
m=(r+l)/;
if(x==arr[m])
return m;
else if(x>arr[m])
l=m+;
else
r=m-;
}
return -;
}
int main()
{
int n,k;
while(~scanf("%d%d",&k,&n)){
for(int i=;i<n;i++){
scanf("%d",&arr[i]);
}
sort(arr,arr+n);
int c=,tt;
for(int i=;i<n;i++){
tt=Find(n,k-arr[i]);
if(tt!=-){
if(tt<=i)
break;
printf("%d %d\n",arr[i],k-arr[i]);
c++;
}
}
if(!c){
printf("No Solution\n");
}
}
return ;
}

51Nod 1001数组中和等于K的数对的更多相关文章

  1. 51nod 1001 数组中和等于K的数对【二分查找/排序】

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组 ...

  2. 51Nod 1001 数组中和等于K的数对 And 1015 水仙花数

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...

  3. 51Nod 1001 数组中和等于K的数对 Label:Water

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  4. 51Nod 1001 数组中和等于K的数对 Set

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  5. 51Nod 1001 数组中和等于K的数对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1001一开始的想法是排序后二分搜索,发现会进行非常多不必要的遍历,十分耗时 ...

  6. 1001 数组中和等于K的数对

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A ...

  7. 1001 数组中和等于K的数对 1002 数塔取数问题 1003 阶乘后面0的数量 1004 n^n的末位数字 1009 数字1的数量

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...

  8. 1001 数组中和等于K的数对 1090 3个数和为0

    二分查找.对数组每个V[i],在其中查找K-V[i],查找完成后修改v[i]避免重复输出 #include<iostream> #include<algorithm> #inc ...

  9. 51Nod - 1001:数组中和等于K的数对

    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A: ...

随机推荐

  1. “Hello World!”团队第三周召开的第五次会议

    一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.代码地址 一.会议时间 2017年10月31日  11:45-12:17 二.会议地点: ...

  2. Thunder团队第三周 - Scrum会议1

    Scrum会议1 小组名称:Thunder 项目名称:i阅app Scrum Master:王航 工作照片: 杨梓瑞在拍照,所以不在照片中. 参会成员: 王航(Master):http://www.c ...

  3. Median of Two Sorted Arrays(hard)

    题目要求: 有两个排序的数组nums1和nums2分别为m和n大小. 找到两个排序数组的中位数.整体运行时间复杂度应为O(log(m + n)). 示例: 我的方法: 分别逐个读取两个数组的数,放到一 ...

  4. TCP系列02—连接管理—1、三次握手与四次挥手

    一.TCP连接管理概述 正如我们在之前所说TCP是一个面向连接的通信协议,因此在进行数据传输前一般需要先建立连接(TFO除外),因此我们首先来介绍TCP的连接管理. 通常一次完整的TCP数据传输一般包 ...

  5. 个人github blog环境设置

    每个人都想拥有自己的网站,但是大部分比较屌丝,不想花钱租赁服务器,哈哈,屌丝有屌丝办法.github应该都听说过吧,github.io提供了此功能,而且使用github来管理自己的代码,如果你有域名, ...

  6. JS DOM(2017.12.28)

    一.获得元素节点的方法 document.getElementById()    根据Id获取元素节点 document.getElementsByName()    根据name获取元素节点   遍 ...

  7. HDU 2114 Calculate S(n)

    http://acm.hdu.edu.cn/showproblem.php?pid=2114 Problem Description Calculate S(n). S(n)=13+23 +33 +. ...

  8. django 使用json.dumps转换queryset的datatime报错问题解决

    最近在使用django做项目的时候想使用ajax来实现前后台数据的交互,但是在将数据库查询结果转换成json数据时,遇到时间格式的数据转换遇到问题,无法正确的进行转换,具体如下: 转换成json时使用 ...

  9. Python使用又拍云进行第三方文件拉取

    在爬虫过程中,需要将图片或其他文件进行存储到云上,但在下载图片时,看官方文档,貌似需要先下载到后再上传又拍云,感觉效率很低下.经查找资料实现Python直接对第三方资源进行文件拉取操作,即不需要下载到 ...

  10. jquery计算器(改良版)

    代码: <!Doctype html> <html> <meta charset="UTF-8"> <title>计算器</t ...