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"。
代码如下:

