lishunjie @ 2024-12-02 20:06:39
本人考场被T1搞崩了,以至于没有时间思考T2了,唉。当时瞟了一眼似乎很难就没想了,没想到居然这么简单。
by Luxe877 @ 2024-12-02 20:58:00
俺也一样qwq
by lishunjie @ 2024-12-02 21:01:16
话说为什么按题解一的式子抄的会超时,求大佬解答一下
//杉月
#include<bits/stdc++.h>
#define N 100005
//#define double long double
#define int long long
using namespace std;
typedef long long LL;
const int mod=1e9+7;
int t;
int m;
LL n,v;
struct node{
int c,d;
bool operator<(const node&aa)const{
if(c!=aa.c) return c<aa.c;
else return d<aa.d;
}
}a[N];
bool pd(){
for(int i=1;i<=m;i++){
if(a[i-1].c==a[i].c&&a[i-1].d!=a[i].d) return false;
}
return true;
}
LL ksm(int x,int p){
LL res=1;
while(p){
if(p&1){
res*=x;
res%=mod;
}
x=x*x%mod;
p>>=1;
}
return res;
}
signed main(){
//freopen("detect2.in","r",stdin);
//freopen("detect.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>t;
while(t--){
cin>>n>>m>>v;
for(int i=1;i<=m;i++){
cin>>a[i].c>>a[i].d;
}
if(m==1){
cout<<ksm(v,2*(n-1))<<endl;continue;
}
sort(a+1,a+m+1);
if(!pd()) {cout<<0<<endl;continue;}
LL ans=1;
for(int i=2;i<=m;i++){
ans*=(ksm(v,2*(a[i].c-a[i-1].c))+mod-ksm(v,a[i].c-a[i-1].c-1)*(v-1)%mod)%mod;
ans%=mod;
}
ans*=ksm(v,a[1].c+n-1-a[m].c);
ans%=mod;
cout<<ans<<endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
by CarlosProvo @ 2024-12-03 11:35:07
俺也一样(悲)
by CarlosProvo @ 2024-12-03 11:36:15
T1因为写错了一个数组名调了近一个小时,当场破防
by HKW0202 @ 2024-12-03 22:27:59
我想出正解但是输入到不合法情况就break导致答案有0就挂分,破大防