全wa求调
查看原帖
全wa求调
1047550
likejie楼主2025/8/2 10:22
#include <bits/stdc++.h>
#define ll long long 
using namespace std;
const ll N=5e5+10;
ll n,m,a[N];
struct node {
    ll l,r,val,lazy;
}
e[N << 2];
void pushup(ll i) {
    e[i].val=e[i << 1].val+e[i << 1 | 1].val;
}
void pushdown(ll i) {
    if (e[i].lazy) {
        ll mid=(e[i].l + e[i].r)>>1;
        e[i << 1].val+=e[i].lazy * (mid - e[i].l + 1);
        e[i << 1 | 1].val+=e[i].lazy * (e[i].r - mid);
        e[i << 1].lazy+=e[i].lazy;
        e[i << 1 | 1].lazy+=e[i].lazy;
        e[i].lazy=0;
    }
}
void build(ll l, ll r, ll i) {
    e[i].l=l;
    e[i].r=r;
    e[i].lazy=0;
    if (l==r) {
        e[i].val=a[l];
        return;
    }
    ll mid=(l + r)>>1;
    build(l, mid, i << 1);
    build(mid + 1, r, i << 1 | 1);
    pushup(i);
}
void modify(ll l, ll r, ll k, ll i) {
    if (e[i].l > r || e[i].r < l) return;
    if (e[i].l >=l && e[i].r <=r) {
        e[i].val=k * (e[i].r - e[i].l + 1);
        e[i].lazy=k;
        return;
    }
    pushdown(i);
    modify(l, r, k, i << 1);
    modify(l, r, k, i << 1 | 1);
    pushup(i);
}
ll query(ll x, ll i) {
    if (e[i].l==e[i].r) {
        return e[i].val;
    }
    pushdown(i);
    ll mid=(e[i].l + e[i].r)>>1;
    if (x <=mid) return query(x, i << 1);
    else return query(x, i << 1 | 1);
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int ans=0;
    cin>>n>>m;
    for (ll i=1; i <=n; i++) a[i]=1;
    build(1, n, 1);
    while (m--) {
        ll x,y,z=0;
        cin>>x>>y;
        modify(x, y, z, 1);
    }
    for (ll i=1; i <=n; i++) {
        ans+=query(i, 1);
    }
    cout << ans << '\n';
    return 0;
}
2025/8/2 10:22
加载中...