小埋数学题解[陈泓瑞原创,禁止抄袭]

1. 小埋数学

题目ID:15898必做题100分

最新提交:Accepted 100 分

历史最高:Accepted 100 分

时间限制: 1000ms

空间限制: 65536kB

题目描述

小埋做了很多𝑎+𝑏相关问题,小埋为了提升自身的实力,决定做一些𝑎+𝑏+𝑐相关问题。

现在有这样一个𝑎+𝑏+𝑐问题,问题的描述是,给定你一个序列,你可以在序列中任取44个数𝑎,𝑏,𝑐,𝑑a,b,c,d(可以重复选取),问是否有一种选择满足:𝑎+𝑏+𝑐=𝑑。

输入格式

第一行是一个正整数𝑛n,𝑛n表示数组的元素数量。

第二行有𝑛n用空格隔开的正整数,有𝑛n个整数数字𝑖i。

输出格式

如果存在一种情况满足,则输出“Yes”(不加引号),否则输出“No”(不加引号)。

样例

Input 1

4 1 8 20 90

Output 1

No

Input 2

4 1 2 3 4

Output 2

Yes

数据范围

1 <= 𝑛 <= 1e3

1 <= 𝑖 <= 1e9

来看这道题。
首先我们想到的就是3层循环套一个二分。
但是n的范围是1 <= 𝑛 <= 1e3。
肯定只能拿部分分


所以我们需要优化。
可以查找元素的STL就有set。
所以我们可以用双层循环枚举A,,B。
把他俩的和加入set
因为A + B = D - C
所以再用双层循环枚举D, C,用set查找。
如果有,输出"Yes"。
没有,输出"No"
注意:
是把枚举D,C的循环执行完后,如果不存在A + B + C = D,才输出"No"。
代码如下: