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
题目给的标签是二分,然而我自己当时还不懂二分。。。想起POJ上有一道是解5元方程的一道题,将暴力的O(n^5)方法用哈希降到了O(n^3),于是就用哈希方法过了,但是真没想到51nod居然没有卡这么幼稚的哈希。。。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#pragma warning(disable:4996)
using namespace std; int n,i, j, num, m, z,x2,y2;
long long val[1005];
map<long long, int>dic; vector<int>x[500005];
vector<int>y[500005]; int main()
{
scanf("%d", &n); for (i = 1; i <= n; i++)
{
scanf("%lld", val+i);
}
num = 0;
for (i = 1; i <= n; i++)
{
for (j = i + 1; j <= n; j++)
{
if(dic[-(val[i] + val[j])]==0)
dic[-(val[i] + val[j])] = ++num;
x[num].push_back(i);
y[num].push_back(j);
}
}
for (i = 1; i < n; i++)
{
for (j = i + 1; j <= n; j++)
{
if (dic[val[i] + val[j]])
{
z = x[dic[val[i] + val[j]]].size();
for (m = 0; m < z; m++)
{
x2 = x[dic[val[i] + val[j]]][m];
y2 = y[dic[val[i] + val[j]]][m];
if (i != x2 && j != y2 && i != y2 && j != x2)
{
cout << "Yes" << endl;
return 0;
}
}
}
}
}
cout << "No" << endl;
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
51nod 1267:4个数和为0 哈希的更多相关文章
- 51Nod 1267 4个数和为0 二分
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No".Input第1行,1个数N,N为数组的长度(4 <= ...
- [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:对所有数排序,排完所有数两两求和,结果正好是排好序的.然后扫一遍,二分查找看之前有没有相反数存 ...
- 51 nod 1267 4个数和为0
1267 4个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 取消关注 给出N个整数,你来判断一下是否能够选出4个数,他们的和为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——T1267 4个数和为0
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267 题目描述 给出N个整数,你来判断一下是否能够选出4个数,他们的和 ...
- 51Nod 1090 3个数和为0 set 二分优化
给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...
随机推荐
- JVM配合IDEA远程调试
前言 如果测试环境中运行的jar包项目报错,需要排错时,会不太方便,这个时候就可以通过远程调试的方式,在本地打断点的方式进行调试 正文 一.首先,运行测试环境的jar包需要加以下参数: java -j ...
- NFC性价比高频读卡器首选方案:FM17550
FM17550具有低电压.低功耗.驱动能力强.多接口支持.多协议支持等特点.适用于低功耗.低电压.低成本要求的非接触读写器应用,及NFC协议兼容的NFC设备. FM17550是一款高度集成的工作在13 ...
- IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
在使用spring boot开发过程中,经常会定义一些应用自己的属性,直接写到application配置文件中使用@Value注解进行使用,这样使用也没有什么问题.不过我认为更优雅的方式是定义自己的属 ...
- 开发者说 | 云+AI赋能心电医疗领域的应用
以"医工汇聚 智竞心电"为主题的首届中国心电智能大赛自2019年1月1日启动全球招募起,共吸引总计545支来自世界各地的医工结合团队,308支团队近780名选手通过初赛资格审查,经 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:LinkedList类
import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ ...
- UVA - 1346 Songs (贪心+排序)
题意:已知每首歌的标号,长度和播放频率,求一种播放顺序,使得最小,并且输出该播放顺序下第t首歌的标号. 分析: 1.长度越短,播放频率越大的歌排在前面,上式越小. 2.s(i)表示的是当前播放顺序下这 ...
- cf 763A. Timofey and a tree
呵呵呵,直接判断是不是一个点连起来所有的特殊边(连接2不同颜色的点的边) (一开始还想各种各样奇怪的dfs...垃圾) #include<bits/stdc++.h> #define LL ...
- 十六、JavaScript之%运算符
一.代码如下 二.运行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- 134-PHP子类重写父类方法,并调用父类方法
<?php class father{ //定义father类 public function method(){ //定义方法 echo '<br />father method' ...
- AFNetworking实现表单(multipart)形式上传图片
最近遇到个问题,就是上传图片到服务器,后台说用表单形式... 由于没弄过这种上传,所以搜了大堆资料,但也没解决问题. 最后通过请教一位大神才得以解决这个简单的问题... 现在将此方法做个笔记... & ...