牛客练习赛25 C :再编号

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37960603/article/details/82150421

题目传送门
代码:

#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);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37960603/article/details/82150421