社区讨论
60pts求调
P11362[NOIP2024] 遗失的赋值参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @migauf5k
- 此快照首次捕获于
- 2025/11/27 01:49 3 个月前
- 此快照最后确认于
- 2025/11/27 10:34 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int fr(){
int x=0,w=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-'){w=-1;}c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*w;
}
const int mod=1e9+7;
const int N=1e5+9;
ll t,n,m,v,c[N],d[N],ans=1,cnt=0,c1,d1;
bool flag;
ll qpw(ll a,ll b){//a^b
ll tmp=1,base=a;
while(b>0){
if(b&1){
tmp*=base;
tmp%=mod;
}
base*=base;
base%=mod;
b>>=1;
}
return tmp;
}
int main(){
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
t=fr();
while(t--){
ans=1;
cnt=0;
flag=0;
map<ll,ll> s;
n=fr();m=fr();v=fr();
for(int i=1;i<=m;i++){
c1=fr();d1=fr();
if(s[c1]==d1)continue;
else if(s[c1]>0){
ans=0;
flag=1;
}
else{
s[c1]=d1;
c[++cnt]=c1;
d[cnt]=d1;
}
}
//for(int i=1;i<=cnt;i++)cout<<c[i]<<" ";
if(flag){
ans=0;
}
else if(cnt==1)ans=qpw(v,2*n-2);
else{
sort(c+1,c+1+cnt);
for(int i=1;i<cnt;i++){
ans*=(qpw(v,2*c[i+1]-2*c[i])-qpw(v,c[i+1]-c[i]-1)*(v-1));
ans%=mod;
}
ans*=qpw(v,2*(c[1]-1+n-c[cnt]));
ans%=mod;
}
cout<<ans<<endl;
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...