Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
48233 | lgh | 【AB-1】图 | C++ | 通过 | 100 | 141 MS | 5852 KB | 882 | 2022-04-11 08:20:59 |
#include <bits/stdc++.h> using namespace std; #define ll long long #define lson (k*2) #define rson (k*2+1) #define mid ((l+r)/2) const ll mod=1e9+7; ll n,m,T,ind[200010],ans[800040]; inline void BuildTree(ll k,ll l,ll r) { if(l==r) { ans[k]=ind[l]%mod; return ; } BuildTree(lson,l,mid),BuildTree(rson,mid+1,r),ans[k]=ans[lson]*ans[rson]%mod; } void Update(ll k,ll l,ll r,ll pos) { if(l>pos||r<pos) return ; if(l==r) { ans[k]=(ans[k]+1)%mod; return ; } Update(lson,l,mid,pos),Update(rson,mid+1,r,pos),ans[k]=ans[lson]*ans[rson]%mod; } int main() { scanf("%lld%lld%lld",&n,&m,&T); for(ll i=1,x,y; i<=m; i++) scanf("%lld%lld",&x,&y),++ind[y]; ind[1]=1ll; BuildTree(1,1,n); printf("%lld\n",ans[1]); for(ll i=1,x,y; i<=T; i++) scanf("%lld%lld",&x,&y),Update(1,1,n,y),printf("%lld\n",ans[1]); return 0; }