30分求调,真的不知道哪错了
查看原帖
30分求调,真的不知道哪错了
1073342
Genshin_ZFYX楼主2024/7/10 11:30
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7;
int qpow(int x,int y)
{
	if(y==0)return 1;
	if(y==1)return x%mod;
	int efm=qpow(x,y/2)%mod;
	if(y%2==0)return efm*efm%mod;
	else return efm*efm%mod*x%mod;
}
struct node{
	int x,y;
}a[100005];
bool cmp(node aa,node bb)
{
	if(aa.x!=bb.x)return aa.x<bb.x;
	else return aa.y<bb.y;
}
int bh[100005],cnt,ans=1,ds;
signed main()
{
	cin.tie(0)->sync_with_stdio(0);
	int n,m,k,cnt=0;
	cin>>n>>m>>k;
	ds=n*(n+1)/2;ds%=mod;
	for(int i=1;i<=k;i++)
	cin>>a[i].x>>a[i].y;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=k;i++)
	{
		if(a[i].x==a[i-1].x&&a[i].y==a[i-1].y)continue;
		//cout<<a[i].x<<" "<<a[i].y<<endl;
		if(a[i].x!=a[i-1].x)bh[++cnt]=ds;
		bh[cnt]=(bh[cnt]-a[i].y+mod)%mod;
	}
	ans=qpow(ds,m-cnt)%mod;
	for(int i=1;i<=cnt;i++)
	{
		ans=(ans*bh[i])%mod;
		ans%=mod;
	}
	cout<<ans%mod;
	return 0;
}

2024/7/10 11:30
加载中...