优化暴力优先搜索
2025-09-10 17:22:11
发布于:广东
10阅读
0回复
0点赞
题目解析
判断一个数组中的所有区间是否满足最大值大于区间和
不正经解法
比赛的时候还并未学习线段树,而且正解确实有点阴间,因此这题反复提交了多遍,不断猜想,最终用暴力法写了出来。
我一开始尝试暴力方法,尝试遍历所有可能的区间长度,但那是一定TLE的,因此我尝试了只检查部分长度区间(失败),后又尝试限制区间长度,就有了下面这个傻瓜式解法
#include <bits/stdc++.h>
using namespace std;
long long a[514514];
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t;
cin >> t;
while(t--){
int n;
bool b=0;
cin >> n;
for(int i=1;i<=n;++i)
cin >> a[i];
int l = min(n, 8);
for(int i=1;i<=n&&!b;i++){
long long max_ = a[i];
long long sum_ = a[i];
for(int j=i+1;j<=n&&j-i<=l;j++){
max_ = max(max_, a[j]);
sum_ += a[j];
if (max_ < sum_) {
b=1;
break;
}
}
}
if(b) cout << "NO" << endl;
else cout << "YES" << endl;
}
}
正经解法
…………
(困了,先发出来保存,有时间了补完)
全部评论 1
帖子暂未完成,发出仅为保存
昨天 来自 广东
0
有帮助,赞一个