[51nod] 1090 3个数和为0 暴力+二分
- 第1行,1个数N,N为数组的长度(0 <= N <= 1000)
- 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
- 如果没有符合条件的组合,输出No Solution。
- 如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则继续按照第二小的数排序。每行3个数,中间用空格分隔,并且这3个数按照从小到大的顺序排列。
- 7
- -3
- -2
- -1
- 0
- 1
- 2
- 3
- -3 0 3
- -3 1 2
- -2 -1 3
- -2 0 2
- -1 0 1
- 二重循环+二分 O(N^2LogN)
- #include <iostream>
- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- int a[];
- bool binary_find(int l, int r, int x)
- {
- while (l <= r) {
- int m = (l+r)>>;
- if (a[m] > x)
- r = m - ;
- else if (a[m] < x)
- l = m + ;
- else
- return ;
- }
- return ;
- }
- int main()
- {
- //freopen("1.txt", "r", stdin);
- int n;
- scanf("%d", &n);
- for (int i = ; i < n; i++)
- scanf("%d", &a[i]);
- sort(a, a+n);
- int flag = ;
- for (int i = ; i < n; i++) {
- for (int j = i+; j < n; j++) {
- int x = -(a[i]+a[j]);
- // printf("%d %d %d\n", a[i], a[j], x);
- if (binary_find(j+, n-, x)) {
- printf("%d %d %d\n", a[i], a[j], x);
- flag = ;
- }
- }
- }
- if (!flag) printf("No Solution\n");
- return ;
- }
更快的二分 同时搜索两个数
- #include <iostream>
- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- int a[];
- int main()
- {
- //freopen("1.txt", "r", stdin);
- int n;
- scanf("%d", &n);
- for (int i = ; i < n; i++)
- scanf("%d", &a[i]);
- sort(a, a+n);
- int flag = ;
- for (int i = ; i < n; i++) {
- int j, k, x;
- j = i+;
- k = n-;
- while (j < k) {
- x = a[i]+a[j]+a[k];
- if (x < )
- j++;
- else if (x > )
- k--;
- else {
- printf("%d %d %d\n", a[i], a[j], a[k]);
- flag = ;
- j++; k--;
- }
- }
- }
- if (!flag) printf("No Solution\n");
- return ;
- }
[51nod] 1090 3个数和为0 暴力+二分的更多相关文章
- 51Nod 1090 3个数和为0(暴力)
1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从 ...
- 51nod 1090 3个数和为0【二分】
1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从 ...
- 51Nod 1090 3个数和为0 set 二分优化
给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...
- [51nod] 1267 4个数和为0 暴力+二分
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No". Input 第1行,1个数N,N为数组的长度(4 < ...
- 51Nod 1090 3个数和为0
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1090 思路:排序 三个for循环 但是要控制循环 不能从头开 ...
- 51nod——T1267 4个数和为0
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267 题目描述 给出N个整数,你来判断一下是否能够选出4个数,他们的和 ...
- 1001 数组中和等于K的数对 1090 3个数和为0
二分查找.对数组每个V[i],在其中查找K-V[i],查找完成后修改v[i]避免重复输出 #include<iostream> #include<algorithm> #inc ...
- 51Nod 1267 4个数和为0 二分
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No".Input第1行,1个数N,N为数组的长度(4 <= ...
- 51nod 1267 4个数和为0
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出&qu ...
随机推荐
- 使用myeclipse开发java,解决java中继承JFrame类出现The type JFrame is not accessible due to restriction的问题
在java中创建窗体,导入了java中的JFrame类,之后会出现错误: Access restriction: The type QName is not accessible due to res ...
- quartz的配置文件
quartz在运行时默认加载的是工程目录下的quartz.properties文件,如果工程目录下没有quartz.properties文件,它就会去读取quartz jar包下的quartz.pro ...
- jqgrid 自动换行
<style>.ui-jqgrid tr.jqgrow td { white-space: normal !important; height: auto; vertical-align: ...
- 使用jQuery解析JSON数据-已验证
本文来源于:http://www.cnblogs.com/codeplus/archive/2011/07/18/2109544.html 上例中得到的JSON数据如下,是一个嵌套JSON: {&qu ...
- Codeforces 667C DP
题意:给你一个字符串,这个字符串的构造方法如下:先选择一个长度大于4的前缀,然后每次向字符串尾部添加一个长度为2或者长度为3的后缀,不能添加连续的相同的后缀,问可能的后缀有哪些?并按字典序输出去. 思 ...
- 启动图。引导页以及EAIntroView的使用
ios启动图: 1242 x 2208 (6plus) R5.5位置 750 x 1334 (6) R4.7位置 640 x 960 (4/4s) 2x ...
- 项目介绍4 y有用
在青岛做了两年开发,大大小小参与过三个项目的开发,一个是某公司内部的人员管理系统,一个是物流项目,最近做的是一个电商项目. 前两个项目采用的是ssh框架搭建的,最近的项目采用的是ssm框架搭建的.在实 ...
- spring mabatis springmvc 看过
.Spring中AOP的应用场景.Aop原理.好处? 答:AOP--Aspect Oriented Programming面向切面编程:用来封装横切关注点,具体可以在下面的场景中使用: Authent ...
- How to Get the Length of File in C
How to get length of file in C //=== int fileLen(FILE *fp) { int nRet = -1; int nPosBak; nPosBak = f ...
- SQL 数据库 学习 007 通过一个示例简单介绍什么是字段、属性、列、元组、记录、表、主键、外键 (上)
SQL 数据库 学习 007 通过一个示例简单介绍什么是字段.属性.列.元组.记录.表.主键.外键 (上) 我们来介绍一下:数据库是如何存储数据的. 数据库是如何存储数据的 来看一个小例子 scott ...