35ptsTLE 求调
查看原帖
35ptsTLE 求调
1308728
xsmfollower楼主2024/12/5 08:10

复杂度应该没问题,为什么 TLE 啊

#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+10,Mod=1e9+7,SIZE=1<<14;
char getc() {
  static char buf[SIZE],*begin=buf,*end=buf;
  if(begin==end) begin=buf,end=buf+fread(buf,1,SIZE,stdin);
  return *begin++;
}
int read() {
  int ret=0; char ch=getc();
  while(!isdigit(ch)) ch=getc();
  while(isdigit(ch)) ret=ret*10+ch-'0',ch=getc();
  return ret;
}
void write(long long x) {
  if(x>9) write(x/10);
  putchar(x%10+'0');
}
struct R { int c,d; }a[N];
ll power(ll a,int b) {
  ll ans=1;
  while(b) {
  	if(b&1) ans=ans*a%Mod;
  	a=a*a%Mod,b>>=1;
  }
  return ans;
}
void solve() {
  int n=read(),m=read(),v=read();
  for(int i=1;i<=m;i++) a[i].c=read(),a[i].d=read();
  sort(a+1,a+m+1,[](R a,R b) { return a.c<b.c; }); ll ans=power(v,2*(a[1].c-1));
  for(int i=2;i<=m;i++) {
  	if(a[i].c==a[i-1].c&&a[i].d!=a[i-1].d) return write(0),putchar('\n'),void();
  	ans=ans*(((power(v,2*(a[i].c-a[i-1].c))-power(v,a[i].c-a[i-1].c)+Mod)%Mod+power(v,a[i].c-a[i-1].c-1))%Mod)%Mod;
  }
  write(ans*power(v,2*(n-a[m].c))%Mod),putchar('\n');
}
int main() {
  //freopen("assign.in","r",stdin);
  //freopen("assign.out","w",stdout);
  int t=read();
  while(t--) solve();
  return 0;
}
2024/12/5 08:10
加载中...