题目链接:点击进入

题目


题意

给一个长度为 n 的数组,问是否存在 x , y , z , w ( 四个数互不相同 ) ,满足 a [ x ] + a [ y ] = a [ z ] + a [ w ] ;

思路

暴力枚举 x 与 y ,得出和值 C ,2 <= C <= 5e6。
有 n ^ 2 对( x , y ),和值 C 大约有 5e6 种取值,当 n ^ 2 > 5e6 时,根据抽屉原理,必有一个和值对应两个以上的( x , y )对,但是,此时可能对应的( x , y )对有相同值,可是对于一个和值 C ,当它出现四次的时候,我们一定可以找到答案,那么复杂度超过O( 4 * C ),所以最终时间复杂度为O( min ( n ^ 2 , C ) )。

代码

#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e7+10;
const int mod=1e9+7;
const double eps=1e-9;
int t,n,m,a[maxn];
vector<pii>v[maxn];
int main()
{
//  ios::sync_with_stdio(false);
//  cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){for(int j=1;j<i;j++){for(auto t:v[a[i]+a[j]]){if(t.first==i||t.first==j) continue;if(t.second==i||t.second==j) continue;cout<<"YES"<<endl;cout<<t.first<<' '<<t.second<<' '<<i<<' '<<j<<endl;return 0;}v[a[i]+a[j]].push_back({i,j});}}cout<<"NO"<<endl;return 0;
}

Going Home - ( 抽屉原理 )相关推荐

  1. poj2356(抽屉原理)

    题意:从输入的N个元素中找出是N的倍数的元素并且输出: 因为这个要求的是连续的数之和,先用sum数组求和:sum[1],sum[1]+sum[2],--,sum[1]+sum[2]+--+sum[n] ...

  2. 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)

    链接:https://ac.nowcoder.com/acm/contest/5203/B 来源:牛客网 题目描述 Listening to the music is relax, but for o ...

  3. POJ 2356 Find a multiple (抽屉原理)

    感觉这个题很不错,至少开始真的没想道可以用抽屉原理推出一个结论,然后把这题秒掉.... 已知有n个元素,sum[i]表示从1到i所有数的和...sum[i]%n可以得到一个剩余系,如果出现0,那么结果 ...

  4. 鸽巢原理(抽屉原理)的详解

    抽屉原理 百科名片 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含义为: ...

  5. POJ 2356 (抽屉原理)

    题目中说:随便输出一组.抽屉原理可以求出取出的数连续的情况. #include <iostream> #include<cstdio> using namespace std; ...

  6. Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)

    Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理.倒排索.建立查找树.处理Hash冲突.Hash查找) 目录 一.SimHash算法 1.SimHash算法五个步骤 2. ...

  7. 14. 不修改数组找出重复的数字【难度: 一般 / 知识点: 抽屉原理 二分】

    第一种方法: 开了map计数,多用了空间,map: logn,时间复杂度O(nlogn) class Solution {public:int duplicateInArray(vector<i ...

  8. hdu 3303(线段树+抽屉原理)

    解题思路:这题利用了抽屉原理,即1-M之间的所有数与M+1的模都不相同.那么可以利用它将要查找所有区间分成[1,Y-1],[Y,2*Y-1],[2*Y,3*Y-1].........一直下去,直到所有 ...

  9. N的倍数(抽屉原理)

    一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数. Input ...

  10. 抽屉远离在计算机的应用,抽屉原理的应用及其推广优秀毕业论文

    抽屉原理的应用及其推广优秀毕业论文 抽屉原理的应用及其推广 数学与计算机科学学院 数学与应用数学 指导老师: 王美能 摘要:抽屉原理也叫鸽巢原理,是研究如何将元素分类的一个原理,也是组合数学里最简单. ...

最新文章

  1. 为什么输出流会有一个flsh_交流会| “流量”还是“留量”,如何成为电商风口上的赢家?...
  2. 【问题帖】压缩图片大小至指定Kb以下
  3. JS函数表达式——函数递归、闭包
  4. boost::function模块实现contains的测试程序
  5. matlab练习程序(各向异性扩散)
  6. jmeter如何定位网络延时_JMeter用户定义变量和properties变量高级使用
  7. 程序员的进阶课-架构师之路(6)-链表
  8. MYSQL——表操作
  9. QObject: Cannot create children for a parent that is in a different thread.
  10. C++:向函数传递对象(对象、对象指针、对象引用)
  11. 【ISO9126】软件质量模型的介绍(软件质量管理的六大特征和二十七个子特征)
  12. SPSS基础操作(一):用幂指数型的权函数建立加权最小二乘回归方程
  13. python github 12306 文贤平_抢票工具成了GitHub热榜第一,最新支持候补抢票,Python跑起来...
  14. 如何越狱苹果TV2在iOS 4.2使用PwnageTool
  15. 【NVMe2.0b 16-1】Get Log Page
  16. 响铃:“新品牌计划”出炉,但拼多多要的不只是C2M
  17. 如何跑通平头哥RISC-V E902的仿真验证
  18. flowiz库中遇到 ValueError: buffer is smaller than requested size报错
  19. 【UI设计】使用ps软件进行一些简单的操作
  20. HDU 1218 - Blurred Vision

热门文章

  1. Python学习笔记 - 探索while无限迭代循环
  2. 2015移动安全挑战赛(阿里看雪主办)全程回顾
  3. 超级计算机-虚拟实验室,Mira超级计算机“最后的旅程”:阿贡实验室进行了一次超大规模宇宙模拟...
  4. javascript 框架_Javascript框架的成本
  5. hive 创建分区表 删除分区表 插入分区表
  6. babel 插件编写
  7. BEA WebLogic Workshop 8.1中文语言包
  8. 如何把流氓软件删除干净
  9. 拿走不谢!固件逆向分析过程中的工具和技巧(上)
  10. 太恐怖!黑客知道你的电话号码就能监控你的一举一动