文章
5
粉丝
0
获赞
22
访问
580
采用滑动窗口做,不知道为什么如果没有在输入时判断输入数据是否等于2048就只会对50%,有没有大佬能解释一下
#include<bits/stdc++.h>
using namespace std;
int main(){
int t=0;
cin>>t;
int i=0;
for(i=0;i<t;i++){
int n=0;
cin>>n;
vector<int>a(n);
int l=0,r=0,sum=0,flag=0;
for(int j=0;j<n;j++){
cin>>a[j];
if(a[j]==2048)flag=1;
}
if(flag==1){
cout<<"YES"<<endl;
continue;
}
sort(a.begin(),a.end());
for(r=0;r<n;r++){
sum=sum+a[r];
if(sum>2048){
sum=sum-a[l];
l++;
}
if(sum==2048){
flag=1;
break;
}
}
if(flag==1)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
登录后发布评论
因为题目中说的是:能不能让序列中出现2048这个数据
如果输入是就有2048这个数字,那么自然也是YES
比如:2048 2 2 4 8这样的数据