51nod 1001 数组中和等于K的数对【二分查找/排序】
第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K <= 10^9)
第2 - N + 1行:A数组的N个元素。(-10^9 <= A[i] <= 10^9)
第1 - M行:每行2个数,要求较小的数在前面,并且这M个数对按照较小的数升序排列。
如果不存在任何一组解则输出:No Solution。
8 9
-1
6
5
3
4
2
9
0
8
-1 9
0 8
2 6
3 5 【分析】:暴力会tle,二分~可以双指针/STL/二分函数 (http://www.cnblogs.com/wuzetiandaren/p/4259199.html)类似。
【代码】:
#include <bits/stdc++.h> using namespace std;
const int maxn = +;
int n,k,L,R;
int a[maxn];
int main()
{
// freopen("in.txt", "r", stdin);
while(cin>>k>>n)
{
int flag=;
for(int i=;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int i=,j=n-;
while(i<j)
{
if(a[i]+a[j]==k)
{
L=i;
R=j;
flag=;
printf("%d %d\n",a[L],a[R]);
}
if(a[i]+a[j]>k)
{
j--;
}
else
{
i++;
}
}
if(flag)
printf("No Solution\n");
}
return ;
}
双指针
#include <bits/stdc++.h> using namespace std;
const int maxn = +;
int n,k,t,L,R;
int a[maxn];
int main()
{
// freopen("in.txt", "r", stdin);
while(cin>>k>>n)
{
int flag=;
for(int i=;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
for(int i=;i<n;i++)
{
t=lower_bound(a,a+n,k-a[i])-a;
if(a[t]==k-a[i]&&t>i)
{
printf("%d %d\n",a[i],k-a[i]);
flag=;
}
}
if(flag)
printf("No Solution\n");
}
return ;
}
stl
51nod 1001 数组中和等于K的数对【二分查找/排序】的更多相关文章
- 51Nod 1001 数组中和等于K的数对 And 1015 水仙花数
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...
- 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 ...
- 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 ...
- 51Nod 1001数组中和等于K的数对
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&quo ...
- 51Nod 1001 数组中和等于K的数对
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1001一开始的想法是排序后二分搜索,发现会进行非常多不必要的遍历,十分耗时 ...
- 1001 数组中和等于K的数对
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A ...
- 1001 数组中和等于K的数对 1002 数塔取数问题 1003 阶乘后面0的数量 1004 n^n的末位数字 1009 数字1的数量
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...
- 1001 数组中和等于K的数对 1090 3个数和为0
二分查找.对数组每个V[i],在其中查找K-V[i],查找完成后修改v[i]避免重复输出 #include<iostream> #include<algorithm> #inc ...
- 51Nod - 1001:数组中和等于K的数对
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A: ...
随机推荐
- 【java下午茶系列】java三重奏之封装
java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是 ...
- [转载]python 变量命名规范
原文地址:python 变量命名规范作者:loveflying python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范.于是自己总结了一些,可供参考. 模块名: 小写字母,单词之间用 ...
- appium-desktop 环境搭建 Java版
用的是appium-desktop1.8.1,testng6.11,java-client6.1.0,selenium-java3.13.0 1.下载逍遥模拟器,装好app 2.下载adb,用adb连 ...
- python基础实践(四)
# -*- coding:utf-8 -*-# Author:sweeping-monkwhy = "为什么要组织列表?"print(why)Chicken_soup = &quo ...
- Adaptive Boosting
Boosting boosting和bagging很类似,所使用的多个分类器类型都是一致的.另外,他们的主要区别点如下: boosting中不同的分类器是通过串行得到的,每个分类器都是根据已经训练出来 ...
- Python的HttpClient实现
Python版本3.4(注意python的版本,python2和python3的写法不一样) 其实无非就是客户端的请求,所以python中这里使用的是urllib.request模块.主要注意的是he ...
- springboot08 jdbc
一.JDBC&连接池 1. jdbc介绍 JDBC(Java DataBase Connectivity ,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数 ...
- 团队冲刺Alpha(九)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- poj 3080 kmp求解多个字符串的最长公共字串,(数据小,有点小暴力 16ms)
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14113 Accepted: 6260 Descr ...
- 201621123033 《Java程序设计》第8周学习总结
第八次作业 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 首先调 ...