Codeforces Round #707 (Div. 1, based on Moscow Open Olympiad in Informatics)

博客分析了Codeforces Round #707中A题'Going Home',讨论了如何判断在给定数组中是否存在满足ax + ay = az + aw条件的不同下标x,y,z,w。思路包括考虑四种特殊情况:四个数相同、两对数相同,以及可能的枚举解法,最大枚举次数不超过2*ai(上限5e6)。" 92163686,8621450,使用git突破码云上传文件限制指南,"['码云', 'git客户端', 'SSH公钥', '版本控制']
摘要由CSDN通过智能技术生成

A. Going Home

题意

给定一个长度为n的数组a,是否存在不同下标x,y,z,w 满足ax + ay = az + aw

4 <= n <= 2e5
1 <= ai <= 2.5e6

思路

如果有四个以上数是相同的,那必然是四个数
如果有两对及以上两个数是相同的,那必然是其中的两对数
否则的话只能枚举,直到有两个数相同,枚举每个数的个数上限为2,
最多只会枚举 2 * ai (上限5e6)

代码

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<unordered_set>
#include<unordered_map>

using namespace std;
#define x first
#define y second
//#define int long long
typedef pair<int ,int > PII;
typedef long long ll;
const int N = 5e6 + 10;
vector<int > num[N];
vector<int > ans[N];
vector<int >s;
int a[N];
int main(){
   
	int n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值