Advertisement

AcWing 1270 数列区间最大值 题解(线段树)

阅读量:

在编写代码过程中,应适当扩大设定的数值范围,以防止出现数据异常偏大的情况,建议直接采用long long类型进行计算操作
原题

复制代码
    #include<bits/stdc++.h>
    
    using namespace std;
    
    #define int long long
    
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f3f;
    
    int n, m;
    struct Node{
    	int l, r;
    	int maxn;
    }tr[N * 4];
    int w[N];
    
    void push_up(int u){
    	tr[u].maxn = max(tr[u << 1].maxn, tr[u << 1 | 1].maxn);
    }
    
    void build(int u, int l, int r){
    	//此时tr[]还没哟值,所以不能用于判断 
    	if(l == r) tr[u] = {l, r, w[r]};
    	else{
    		tr[u] =

全部评论 (0)

还没有任何评论哟~