社区讨论

45 pts求调

P11362[NOIP2024] 遗失的赋值参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m49n4vpe
此快照首次捕获于
2024/12/04 16:43
去年
此快照最后确认于
2025/11/04 13:22
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-'){f=-1;}ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0',ch=getchar();}return x*f;}
void write(int x){if(x<0){putchar('-'),x=-x;}if(x>9){write(x/10);} putchar(x%10+'0');return;}
int qpow(int a,int b,int mod){
	if(b==0){return 1;}
	int mid=qpow(a,b/2,mod)%mod;
	if(b&1){return (mid*mid%mod)*a%mod;}
	return mid*mid%mod;
}
const int N=1e5+5,mod=1e9+7;
int t;
int n,m,v;
int c[N];
map<int,int>mp;
signed main(){
//	freopen("assign2.in","r",stdin);
    cin>>t;
    while(t--){
    	mp.clear();
    	memset(c,0,sizeof(c));
		cin>>n>>m>>v;
		int ans=qpow(v,n*2-2,mod);
		for(int i=1,d;i<=m;i++){
			cin>>c[i]>>d;
			if(mp[c[i]]!=0&&mp[c[i]]!=d){
				ans=0;
			}
			mp[c[i]]=d;
		}
		if(!ans){
			cout<<ans<<"\n";
			continue;
		}
		sort(c+1,c+m+1);
		int mm=unique(c+1,c+m+1)-c-1;
//		cout<<"ANS="<<mm<<"\n";
		for(int i=2;i<=mm;i++){
			ans=(ans*(qpow(v,c[i]-c[i-1]+1,mod)-1+mod)%mod)*qpow(v,(c[i]-c[i-1]+1)*(mod-2),mod)%mod;
		}cout<<ans<<"\n";
	}
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...