记录编号 598141 评测结果 MMMMMAAAAWWWMMMWMMMM
题目名称 [NOIP 2024]遗失的赋值 最终得分 20
用户昵称 Gravatar李奇文 是否通过 未通过
代码语言 C++ 运行时间 6.782 s
提交时间 2025-01-15 07:59:59 内存使用 310.55 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long mod=1e9+7;
long long T,n,m,v,q,ans;
struct node{
    int c,d;
}e[100005];
bool cmp(node a,node b){
    if(a.c!=b.c){
        return a.c<b.c;
    }
    return a.d<b.d;
}
int ksm(long long a,long long b){
    if(!b) return 1ll;
    long long c=ksm(a,b>>1);
    c=c*c%mod;
    if(b&1){
        c=c*a%mod;
    }
    return c;
}
int main(){
    freopen("assign.in","r",stdin);
    freopen("assign.out","w",stdout);
    std::cin>>T;
    while(T--){
        q=0,ans=0;
        std::cin>>n>>m>>v;
        for(int i=1;i<=m;i++){
            std::cin>>e[i].c>>e[i].d;
        }
        sort(e+1,e+1+m,cmp);
        for(int i=1;i<m;i++){
            if(e[i].c==e[i+1].c&&e[i].d!=e[i+1].d){
                q=1;
            }        
        }
        if(q){
            cout<<0<<endl;
            continue;
        }
        ans=ksm(v,(e[1].c-1)*2);
        for(int i=1;i<m;i++){
            if(e[i].c==e[i+1].d){
                continue;
            }
            ans*=ans*(ksm(v,2*(e[i+1].c-e[i].c))-ksm(v,e[i+1].c-e[i].c-1)*(v-1)%mod+mod)%mod;           
        }
        ans=ans*ksm(v,(n-e[m].c)*2)%mod;
        std::cout<<ans<<endl;
    }
    return 0;    
}