[51nod] 1267 4个数和为0 暴力+二分
- 第1行,1个数N,N为数组的长度(4 <= N <= 1000)
- 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
- 如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。
- 5
- -1
- 1
- -5
- 2
- 4
- Yes
- 暴力+排序+二分
- #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);
- for (int i = ; i < n; i++)
- for (int j = i+; j < n; j++) {
- int k, m, sum;
- k = j+;
- m = n-;
- while (k < m) {
- sum = a[i]+a[j]+a[k]+a[m];
- if (sum < ) {
- k++;
- }
- else if (sum > ) {
- m--;
- }
- else {
- k++; m--;
- printf("Yes\n");
- return ;
- }
- }
- }
- printf("No\n");
- return ;
- }
- 还有个很好的思路,先把数组中任意两个数存起来,再从小到大排序,类似二分的思想从两头开始查找,是否满足sum1+sum2==0 并且两个坐标不重叠,每个点只选一次
- #include <iostream>
- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- int a[];
- struct node
- {
- int x, y;
- int sum;
- }P[*];
- int cmp(node a, node b)
- {
- return a.sum < b.sum;
- }
- int main()
- {
- freopen("1.txt", "r", stdin);
- int n;
- scanf("%d", &n);
- for (int i = ; i < n; i++)
- scanf("%d", &a[i]);
- int k = ;
- for (int i = ; i < n; i++)
- for (int j = i+; j < n; j++) {
- P[k].x = a[i];
- P[k].y = a[j];
- P[k++].sum = a[i]+a[j];
- }
- sort(P, P+k, cmp);
- int l = , r = k-;
- int flag = ;
- while (l < r) {
- if (P[l].sum+P[r].sum== && P[l].x!=P[r].x && P[l].y!=P[r].y
- && P[l].x!=P[r].y && P[l].y != P[r].x) {
- flag = ;
- break;
- }
- else if (P[l].sum+P[r].sum < )
- l++;
- else r--;
- }
- if (flag) printf("Yes\n");
- else printf("No\n");
- return ;
- }
[51nod] 1267 4个数和为0 暴力+二分的更多相关文章
- [51nod] 1090 3个数和为0 暴力+二分
给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...
- 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 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 ...
- 51nod 1267 4个数和为0 思路:哈希map+避免重复的点
题目: 总结大佬们的思路: 思路1:所有数两两求和,存入map中,每次判断有没有相反数被标记过. 思路2:对所有数排序,排完所有数两两求和,结果正好是排好序的.然后扫一遍,二分查找看之前有没有相反数存 ...
- 51Nod 1090 3个数和为0 set 二分优化
给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...
- 51 nod 1267 4个数和为0
1267 4个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 取消关注 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出& ...
- 51nod——T1267 4个数和为0
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267 题目描述 给出N个整数,你来判断一下是否能够选出4个数,他们的和 ...
随机推荐
- discuz论坛搬家
很多站长第一次做网站的时候,无奈选择了速度不是很稳定的空间,慢慢会发现有很多物美价廉速度相当快的空间 这个时候,站长在网站搬家的过程中就会遇到很多困难,今天老袋鼠给大家详细讲解一下discuz论坛搬家 ...
- ABAP-创建物料主数据
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' *&------------------------------------------------------- ...
- 7-3 堆栈模拟队列(25 point(s)) 【数据结构】
7-3 堆栈模拟队列(25 point(s)) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stac ...
- 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
原文地址:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Goo ...
- HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Ot ...
- html5 canvas画饼
1. [图片] lxdpie.jpg 2. [文件] lqdpie.html ~ 801B 下载(7) <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...
- 织梦简洁机械设备dedecms模板
织梦简洁机械设备dedecms模板,个人网站模板,dedecms模板. 模板地址:http://www.huiyi8.com/sc/7269.html
- Redis常用数据结构和操作
1.String 存入字符类型 Set name luowen 设置name = luowen 存储 Get name 获取设置好的name的值 Setnx name luowen 设置name键值为 ...
- 迁移学习——使用Tensorflow和VGG16预训模型进行预测
使用Tensorflow和VGG16预训模型进行预测 from:https://zhuanlan.zhihu.com/p/28997549 fast.ai的入门教程中使用了kaggle: dogs ...
- ES搜索排序,文档相关度评分介绍——TF-IDF—term frequency, inverse document frequency, and field-length norm—are calculated and stored at index time.
Theory Behind Relevance Scoring Lucene (and thus Elasticsearch) uses the Boolean model to find match ...