QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#772153#7219. The Mighty SpellAlicXCompile Error//C++981.8kb2024-11-22 17:13:172024-11-22 17:13:18

Judging History

你现在查看的是最新测评结果

  • [2024-11-22 17:13:18]
  • 评测
  • [2024-11-22 17:13:17]
  • 提交

answer

#include<bits/stdc++.h> 
#define ll long long 
#define x first 
#define y second 
#define il inline 
#define em emplace 
#define eb emplace_back 
#define debug() puts("-----") 
using namespace std; 
typedef pair<int,int> pii; 
il 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<<1)+(x<<3)+(ch^48),ch=getchar(); 
	return x*f; 
} 
const int N=2e5+10,M=55; 
const int mod=1e9+7,inv2=500000004; 
int n,m; 
int a[N]; 
int num[N]; 
int fac[N]; 
bool st[N]; 
int f[N],g[N]; 
int cnt[N][M]; 
int lst[N],mp[M]; 
il int qmi(int x,int k){ 
	int res=1; 
	while(k){ 
		if(k&1) res=1ll*res*x%mod; 
		x=1ll*x*x%mod; k>>=1; 	
	} return res; 
} 
int p1=0,p2=0; 
int vec[N],v[N]; 
mt19937 rnd(time(0)); 
signed main(){ 
	fac[0]=1; 
	n=read(),m=read(); 
	for(int i=1;i<=n;i++){ 
		a[i]=read(); 
		fac[i]=fac[i-1]*2ll%mod; 
		f[i]=(2ll*i*i%mod*i%mod+3ll*i*i%mod+3*i+3)%mod; 
		for(int j=1;j<=m;j++) cnt[i][j]=cnt[i-1][j]; 
		cnt[i][a[i]]++; 
	} g[1]=f[1]; 
	for(int i=2;i<=n;i++) g[i]=(f[i]-2ll*f[i-1]%mod+f[i-2]+mod)%mod; 
	for(int i=n;i>=1;i--) lst[i]=mp[a[i]],mp[a[i]]=i; 
	vec[++p1]=n+1; 
	for(int l=n;l>=1;l--){ 
		p2=0; 
		for(int i=1;i<=p1;i++) if(a[vec[i]]!=a[l]) v[++p2]=vec[i]; 
		vec[p1=1]=l; for(int i=1;i<=p2;i++) vec[++p1]=v[i]; 
		for(int j=1;j<=m;j++) st[j]=false; 
		for(int i=1;i<p1;i++){ 
			int r=vec[i],res=fac[r-l+1]; 
			st[a[r]]=true; 
			for(int j=1;j<=m;j++){ 
				int val=cnt[n][j]-cnt[r][j]+cnt[l-1][j]; 
				res=1ll*res*(fac[val]-(!st[j])+mod)%mod; 
			} num[r-l+1]=(num[r-l+1]+res)%mod; 
			num[vec[i+1]-l+1]=(num[vec[i+1]-l+1]-res+mod)%mod; 
		} 
	} int ans=0; 
	for(int i=1;i<=n;i++){ 
		num[i]=(num[i]+num[i-1])%mod; 
		ans=(ans+1ll*num[i]*g[i]%mod*qmi(fac[i],mod-2)%mod)%mod; 
	} printf("%d\n",ans); 
	return 0; 
} 

详细

answer.code:36:1: error: ‘mt19937’ does not name a type
   36 | mt19937 rnd(time(0));
      | ^~~~~~~