这题随机选点能过吗?
查看原帖
这题随机选点能过吗?
578029
ivyjiao楼主2024/1/23 16:21

感觉被卡掉了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
int t,n,a[3001][3001],b[3001][3001],c[3001][3001];
bool vis[3001][3001];
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    srand(time(0));
    cin>>t;
    while(t--){
        memset(vis,0,sizeof vis);
        cin>>n;
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j];
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>b[i][j];
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>c[i][j];
        for(int k=1;k<=min(n*n,100000ll);k++){
            int x=rand()%n+1,y=rand()%n+1,cnt=0;
            if(vis[x][y]){
                k--;
                continue;
            }
            vis[x][y]=1;
            for(int i=1;i<=n;i++) cnt+=a[x][i]*b[i][y],cnt%=mod;
            if(cnt!=c[x][y]){
                cout<<"No\n";
                goto T1;
            }
        }
        cout<<"Yes\n";
        T1:;
    }
}
2024/1/23 16:21
加载中...