Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33241 LYLAKIOI 【S】T2 C++ 解答错误 30 1085 MS 11992 KB 1863 2024-10-04 17:37:15

Tests(6/20):


#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define p_b push_back #define m_p make_pair typedef long long ll; using namespace std; const int maxn=2e5+10,mod=1e9+7; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,m,TT; int tag[int(2e6)+10]; int qpow(int a,int b){ int res=1; while(b){ if(b&1)res=res*1ll*a%mod; a=a*1ll*a%mod;b>>=1; }return res; } struct mat { int n,m; int t[75][75]; void clear(){ n=m=0;memset(t,0,sizeof(t)); } }T[2005],nw; mat operator*(mat a,mat b){ mat c;c.clear();c.n=a.n,c.m=b.m; up(i,1,a.n)up(j,1,b.m)up(k,1,a.m)(c.t[i][j]+=a.t[i][k]*1ll*b.t[k][j]%mod)%=mod; return c; } void slv(){ n=read(),m=read(),TT=read(); int B=min(2000,(int)sqrt(TT/n)); up(i,1,n){ string s;cin>>s;s=" "+s;int ct=0; up(j,1,n)if(s[j]=='1')ct++; up(j,1,n)if(s[j]=='1')T[1].t[i][j]=qpow(ct,mod-2); }T[1].n=T[1].m=n; up(i,2,B)T[i]=T[i-1]*T[1]; T[0].n=T[1].m=n; up(i,1,n)T[0].t[i][i]=1; up(i,1,m){ int x=read(),p=read(); tag[x]=p; }int res=0,p=0; nw.n=1,nw.m=n; up(i,1,TT){ if(i%B==0||tag[i]){ p++;nw=nw*T[p];p=0; if(tag[i])(nw.t[1][tag[i]]+=1)%=mod; }else p++; int ans=0; up(j,1,n)(ans+=T[p].t[1][j]*1ll*nw.t[j][n]%mod)%=mod; res^=ans; }cout<<res; }int main(){ //freopen("sequence.in","r",stdin); //freopen("sequence.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }


测评信息: