优化暴力优先搜索
2025-09-10 17:22:11
发布于:广东
25阅读
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
帖子暂未完成,发出仅为保存
2025-09-09 来自 广东
0







有帮助,赞一个