天天看点

牛客练习赛25 C :再编号

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
const int maxn=100000+100;
const int mod=1e9+7;

LL tt[maxn],sum;
int ans[maxn];
int n,m;

int main(){
  
  scanf("%d%d",&n,&m);
  tt[0]=0;
  tt[1]=1;
  for(int i=2;i<maxn;i++) tt[i]=(n-1)*tt[i-1]+((i%2)?i:-i)+(((i-1)%2)?i-1:1-i),tt[i]%=mod;
  for(int i=1;i<=n;i++) scanf("%d",&ans[i]),sum+=ans[i],sum%=mod;
  while(m--){
    
    int x,t;
    scanf("%d%d",&x,&t);
    LL key=sum*tt[t]%mod;
    key=((key+(t%2?-ans[x]:ans[x]))%mod+mod)%mod;
    printf("%lld\n",key);
  }
}      

继续阅读