首页 > 其他分享 >【CF1698C】3SUM Closure

【CF1698C】3SUM Closure

时间:2023-12-17 19:01:44浏览次数:27  
标签:Closure 元素 false 3SUM ll CF1698C back 数组 ans

题目大意:

判断一个数组是否满足其中任意三个元素之和均为数组的元素


如果一个元素出现的次数大于三,那么我们将这个元素的数量减到三,答案不会变。

另外,我们发现,如果数组至少中有三个正数,或者至少有三个负数,那么答案一定为NO。

如果上面的条件不满足,那么现在这个数组里的元素最多只有7个(2个正数,2个负数,3个0),这时用三重循环暴力枚举数组中的三个元素即可解决问题。

#include<bits/stdc++.h>
#define mid ((l+r)>>1)
using namespace std;
typedef long long ll;
ll n,a[200000+10];
int main(){
	int T;
	cin >> T;
	while(T--){
		bool ans=true;
		map<ll,ll> vis;
		ll cntp=0,cntm=0;
		cin >> n;
		for(ll i=1;i<=n;i++){
			cin >> a[i],vis[a[i]]=true;
			if(a[i]>0)cntp++;
			else if(a[i]<0)cntm++;
		}
		if(cntp>=3)ans=false;
		if(cntm>=3)ans=false;
		if(ans==false){
			cout << "NO" << endl;
			continue;
		}
		sort(a+1,a+1+n);
		vector<ll> c;
		c.push_back(a[1]),c.push_back(a[2]),c.push_back(a[3]);
		for(ll i=4;i<=n;i++)
			if((a[i]==a[i-1]&&a[i]==a[i-2]&&a[i]==a[i-3])==false)
				c.push_back(a[i]);
		for(ll i=0;i<c.size();i++)
			for(ll j=i+1;j<c.size();j++)
				for(ll k=j+1;k<c.size();k++)
					if(vis[c[i]+c[j]+c[k]]==false)
						ans=false;
		cout << (ans?"YES":"NO") << endl;
	}
	return 0;
}

标签:Closure,元素,false,3SUM,ll,CF1698C,back,数组,ans
From: https://www.cnblogs.com/ningziang/p/17909555.html

相关文章

  • 以下对闭包(closure)理解正确的有 ABCD
    以下对闭包(closure)理解正确的有ABCDA闭包是指有权访问另一个函数作用域中变量的函数;B函数内再嵌套函数,返回到外部形成闭包;C内部函数可以引用外层的参数和变量D参数和变量不会被垃圾回收机制回收闭包的作用​ 1可以读取函数内部的变量​ 2可以把变量始终保存在内......
  • 闭包Closure
    闭包目的:实现函数的复用。php会自动把闭包函数转换为内置的Closure的对象实例,依赖Closure对象实例给闭包函数增加了更多的能力。闭包不能被实例(私有构造函数),也不能被继承(finally类)。可以通过反射来判断闭包实例是否能被实例,继承。 匿名函数php5.3时引入,匿名函数,又称Anonym......
  • Go - closure
     packagemainimport"fmt"funcmain(){fori:=0;i<3;i++{fmt.Println(outerFunc()())}fmt.Println("------------------------")next:=outerFunc()fori:=0;i<3;i++{fmt.Pri......
  • Javascript闭包(Closure)
    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言......
  • 闭包-closure
    1.闭包Closure:有权访问另一个函数作用域中变量的函数。包含被引用变量(函数)的对象。2.闭包的产生:当一个嵌套的内部函数引用了外部函数的变量时,就产生了闭包。2-1.闭包产生的条件:①函数嵌套。②内部函数引用了外部函数的数据(变量/函数)。3.常见的闭包:3-1.将......
  • Go - A Tour of Go Exercise: Fibonacci closure
    packagemainimport"fmt"//fibonacciisafunctionthatreturns//afunctionthatreturnsanint.funcfibonacci()func()int{f0,f1:=0,1returnfunc()int{f:=f0f0,f1=f1,f+f1returnf}}......
  • LeetCode 16. 3Sum Closest 双指针+排序
    Givenanintegerarraynumsoflengthnandanintegertarget,findthreeintegersinnumssuchthatthesumisclosesttotarget.Returnthesumofthethreeintegers.Youmayassumethateachinputwouldhaveexactlyonesolution.Solution先将原数组排序,然......
  • Exercise: Fibonacci closure
    Go里面斐波那契数列的简单实现。我那会儿的教材是1,1起算,即f(0)=1,f(1)=1。Go的Exercise说明里面是0,1起算。既然是用Go写,索性就用它的定义吧,主要代码如下(Go的这个multipleresult用起来是真方便):1funcfibonacci()func()int{2F0,F1:=0,13returnfunc()int......
  • leetcode 16 最接近的三数之和 3sum-closest【ct】
    ===思路:在遍历中去计算,每一轮循环中都去计算,如果distance更小就去更新distance。如果sum>target,end--,如果sum<target,start++,如果等于,就可以直接返回target  ......
  • 闭包(closure)现象
    defmultiply_list():return[lambdax:i*xforiinrange(4)]print([m(100)forminmultiply_list()])forminmultiply_list():print(m(100))defmultiply_gene():return(lambdax:i*xforiinrange(4))print([m(100)forminmultiply_......