文章

5

粉丝

0

获赞

22

访问

580

头像
第7套2048的游戏,用滑动窗口做稚嫩50%数据不知道为什么
我要提问
发布于2025年3月20日 16:11
阅读数 98

采用滑动窗口做,不知道为什么如果没有在输入时判断输入数据是否等于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;

}

}

登录查看完整内容


登录后发布评论

3 条评论
快乐小土狗
2025年3月20日 17:38

因为题目中说的是:能不能让序列中出现2048这个数据

如果输入是就有2048这个数字,那么自然也是YES

比如:2048 2  2 4 8这样的数据

赞(0)

快乐小土狗 : 回复 快乐小土狗: 50%的原因是一个测试样例有T组数据,只要其中有一组有这个情况,那么这一组都是没有分的

2025年3月20日 17:40

快乐小土狗 : 回复 快乐小土狗: 考试的时候一般不会这样,估计没考虑到也能拿80%的分数

2025年3月20日 17:41