1 条题解

  • 1
    @ 2025-1-12 22:02:22
    #include<iostream>
    #include<bitset>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n, m;
    bitset<1006> a[2006];
    void solve(){
    	int c,r;
    	int k=n;
    	for(c=0,r=0;c<n;c++){
    		int t=r;
    		int i;
    		for(i=r;i<m;i++){
    			if(a[i][c]){
    				t=i;
    				break;
    			}
    		}
    		if(i==m){
    			break;
    		} 
    		if(i+1>k){
    			k=i+1;
    		}
    		swap(a[r],a[t]);
    		for(int i=r+1;i<m;i++){
    			if(a[i][c]){
    				a[i]^=a[r];
    			}
    		}
    		r++;
    	}
    	if(r<n){
    		cout << "Cannot Determine" << endl;
    	}
    	else{
    		cout<<k<<endl;
    		for(int i=n-2;i>=0;i--){
    			for(int j=i+1;j<n;j++){
    				a[i][n]=a[i][n]^(a[i][j]*a[j][n]);
    			}
    		}
    		for(int i=0;i<n;i++){
    			if(a[i][n]){
    				cout<<"?y7M#"<<endl;
    			}
    			else{
    				cout<<"Earth"<<endl;
    			}
    		}
    	}
    }
    int main(){
    	cin>>n>>m;
    	for(int i=0;i<m;i++){
    		string t;
    		cin>>t;
    		for(int j=0;j<n;j++){
    			a[i][j]=t[j]-'0';
    		}
    		int k;
    		cin>>k;
    		a[i][n]=k;
    	}
    	solve();
    	return 0;
    }//不是没人做吗?
    

    信息

    ID
    6485
    时间
    1000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    4
    已通过
    2
    上传者