二分查找。对数组每个V[i],在其中查找K-V[i],查找完成后修改v[i]避免重复输出

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstdio>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
int main()
{
vector<LL> vv;
bool sign = false;
LL t,k,n;
scanf("%lld%lld",&k,&n);
for(int i=;i<n;i++)
{
scanf("%lld",&t);
vv.push_back(t);
}
sort(vv.begin(),vv.end());
int l =vv.size();
for(int i=;i<l;i++)
{
if(vv[i]==INF) continue;
vector<LL>::iterator it;
if(binary_search(vv.begin(),vv.end(),k-vv[i]))
it = lower_bound(vv.begin(),vv.end(),k-vv[i]);
else
continue;
if(it!=vv.end()&&*it!=vv[i])
{
sign = true;
if(*it>vv[i])
printf("%lld %lld\n",vv[i],*it);
else
printf("%lld %lld\n",*it,vv[i]);
*it = INF;
}
}
if(!sign)
printf("No Solution\n");
return ;
}

三个数的和为0,在前面代码基础上略作修改即可。

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long LL;
#define MAXN 1001
#define INF 0x3f3f3f3f
bool been[MAXN];
bool all_sign = false;
LL n;
vector<LL> VV;
void solve(LL k,vector<LL> vv,LL pos)
{
memset(been,false,sizeof(been));
for(LL i=pos+;i<n;i++)
{
if(been[i]==true) continue;
vector<LL>::iterator it;
if(binary_search(vv.begin()+pos+,vv.end(),k-vv[i]))
it = lower_bound(vv.begin()+pos+,vv.end(),k-vv[i]);
else
continue;
if(it!=vv.end()&&*it!=vv[i])
{
all_sign = true;
if(*it>vv[i])
printf("%lld %lld %lld\n",-k,vv[i],*it);
else
printf("%lld %lld %lld\n",-k,*it,vv[i]);
been[it-vv.begin()] = true;
}
} }
int main()
{
LL temp,i;
scanf("%lld",&n);
for(i=;i<n;i++)
{
scanf("%lld",&temp);
VV.push_back(temp);
}
sort(VV.begin(),VV.end());
for(i=;i<n;i++)
{
if(VV[i]>=)
break;
temp = VV[i];
solve(-temp,VV,i);
been[i] = true;
}
if(!all_sign)
printf("No Solution\n");
return ;
}

1001 数组中和等于K的数对 1090 3个数和为0的更多相关文章

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

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

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

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

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

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

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

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

  5. 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 ...

  6. 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 ...

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

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

  8. 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 ...

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

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

随机推荐

  1. 创建虚拟目录失败,必须为服务器名称指定“localhost”?看进来!!

    没废话,直接讲! 关于微信开发过程,远程调试后,再次打开vs出现项目加载失败的解决办法! 上图: 这图应该不陌生,你肯定打开iis把绑定的域名给干掉了.这个提示很坑人,简直就是坑爹!!!fck!! 来 ...

  2. EC笔记:第三部分:14、在资源管理类中小心Copying行为

    场景 上一节实现了智能指针,其中的拷贝构造函数和赋值运算符是通过增加/减少指针的引用计数来操作的.但是如果是管理一个独占资源呢?我们希望在一个资源使用时被锁定,在使用完毕后被释放. #include ...

  3. querystring模块

    querystring处理参数的小利器. 下面是querystring的四个方法.   ①stringify:将一个参数对象序列化为一个字符串 eg: querystring.stringify({n ...

  4. Java迭代器

    迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...

  5. 使用Mavne生成可以执行的jar文件

    到目前为之,还没有运行HelloWorld的项目,不要忘了HelloWorld类可是有一个main方法的.使用mvn clean install命令默认生成的jar 包是不能直接运行的.因为带有mai ...

  6. java List的排序

    List自定义排序 1.第一种方法,就是list中对象实现Comparable接口,重写compareTo接口, 对排序的字段进行比较.2.第二种方法,就是在重载Collections.sort方法. ...

  7. SSH框架使用注解简化代码

    注释的优势: 1.最简单直接的优势就是减少了配置文件的代码量. 2.注释和Java代码位于一个文件中,而XML 配置采用独立的配置文件.配置信息和 Java 代码放在一起,有助于增强程序的内聚性.而采 ...

  8. SSH远程登录原理与运用

    SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...

  9. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  10. 深化管理、提升IT的数据平台建设方案

    谈到信息化,每个企业有每个企业的业务模式,每个企业有每个企业不同的思考.落地有效的信息化建设一定紧跟着企业的发展,围绕业务和管理,来提升效率,创造价值. 对于企业如何在发展的不同阶段提升信息化建设,这 ...