蒟蒻RE求调
查看原帖
蒟蒻RE求调
950927
_luo_gu楼主2024/3/3 21:41

以下代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std ;
#define int long long
#define lson ( pos << 1 )
#define rson ( pos << 1 | 1 )
//由于取反的性质,所以当两次取反就相当于没取反
//所以只需要记录取反的次数就行了
struct SegTree{
    int sum ;
    int lz ;
};
SegTree tre[400005] ;
void pushup( int pos ){
    tre[pos].sum = tre[lson].sum + tre[rson].sum ;
    return ;
}
void build( int pos , int l , int r ){
    tre[pos].lz = 0 ;
    tre[pos].sum = 0 ;
}
void pushdown( int pos , int l , int r ){
    if( tre[pos].lz != 0 ){
        int mid ;
        mid = ( l + r ) >> 1 ;
        tre[lson].lz += tre[pos].lz ;
        tre[rson].lz += tre[pos].lz ;
        tre[lson].sum = ( mid - l + 1 - tre[lson].sum );
        tre[rson].sum = ( l - mid - tre[rson].sum );
    }
    tre[pos].lz = 0 ;
    return ;
}
void update( int pos , int l , int r , int ql , int qr ){
    if( ql <= l && r <= qr ){
        tre[pos].lz ++ ;
        tre[pos].sum = ( r - l + 1 - tre[pos].sum );
        return ;
    }
    pushdown( pos , l , r );
    int mid = ( l + r ) >> 1 ;
    if( ql <= mid ){
        update( lson , l , mid , ql , qr );
    }
    if( qr > mid ){
        update( rson , mid+1 , r , ql , qr );
    }
    pushup( pos );
    return ;
}
int query( int pos , int l , int r , int x ){
    if( l == r ){
        return tre[pos].sum ;
    }
    int mid = ( l + r )>> 1 ;
    if( x <= mid ){
        query( lson , l , mid , x );
    }else{
        query( rson , mid+1 , r , x );
    }
}
int n , m , t ;
signed main(){
    int l , r , ii ;
    scanf("%d%d" , &n , &m );
    for( int i = 1 ; i <= n ; i ++ ){
        scanf("%d" , &t );
        if( t == 1 ){
            scanf("%d%d" , &l , &r );
            update( 1 , 1, n , l , r );
            cout << "test" << endl;
        }
        if( t == 2 ){
            scanf("%d%" , &ii );
            int ans ;
            ans = query( 1 , 1 , n , ii ) ;
            cout << ans << endl;
        }
    }
    return 0 ;
}

感谢大佬!!好人一生平安!!

2024/3/3 21:41
加载中...