社区讨论

70WA求调

P2804神秘数字参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mia50mb9
此快照首次捕获于
2025/11/22 18:19
3 个月前
此快照最后确认于
2025/11/22 20:00
3 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N(2e5+5),mod(92084931);
int n,m;
ll s[N],b[N],tr[N],a[N];
#define lowbit(x) (x&(-x))
inline void add(int x,int N){
    while(x<=N){
        tr[x]=(tr[x]+1)%mod;
        x+=lowbit(x);
    }
}
inline ll query(int x){
    ll res(0);
    while(x){
        res+=tr[x];res%=mod;
        x-=lowbit(x);
    }return res;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i(1);i<=n;++i){
        cin>>a[i];a[i]-=m;
        s[i]=s[i-1]+a[i];
        b[i]=s[i];
    }
    sort(b+1,b+n+1);int nl(unique(b+1,b+n+1)-b);
    for(int i(1);i<=n;++i) s[i]=lower_bound(b+1,b+nl+1,s[i])-b;
    ll ans(0);
    for(int i(1);i<=n;++i){
        // cout<<s[i]<<" "<<query(s[i]-1)<<"\n";
        add(s[i],nl);
        ans=(ans+query(s[i]-1)+(b[s[i]]>0))%mod;
    }cout<<ans;
    return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...