zoukankan      html  css  js  c++  java
  • poj2947 Widget Factory

    模意义下整数高斯消元

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    int n, m, k, uu, a[305][305];
    char ss[15];
    int getDay(){
    	if(ss[0]=='M')	return 1;
    	if(ss[0]=='T' && ss[1]=='U')	return 2;
    	if(ss[0]=='W')	return 3;
    	if(ss[0]=='T' && ss[1]=='H')	return 4;
    	if(ss[0]=='F')	return 5;
    	if(ss[0]=='S' && ss[1]=='A')	return 6;
    	if(ss[0]=='S' && ss[1]=='U')	return 7;
    }
    int gauss(){
    	int hmn=1;
    	for(int i=1; i<=n; i++){
    		int maxi=0;
    		for(int j=hmn; j<=m; j++)
    			if(a[j][i]){
    				maxi = j;
    				break;
    			}
    		if(maxi){
    			swap(a[maxi], a[hmn]);
    			for(int j=hmn+1; j<=m; j++)
    				if(a[j][i]){
    					int bei1=a[hmn][i];
    					int bei2=a[j][i];
    					for(int l=i; l<=n+1; l++)
    						a[j][l] = ((a[j][l] * bei1 - a[hmn][l] * bei2) % 7 + 7) % 7;
    				}
    				hmn++;
    		}
    	}
    	for(int i=hmn; i<=m; i++)
    		if(a[i][n+1])
    			return -1;
    	if(hmn<=n)	return 1;
    	for(int i=n; i>=1; i--){
    		for(int j=i+1; j<=n; j++){
    			a[i][n+1] = ((a[i][n+1] - a[j][n+1] * a[i][j])%7 + 7) % 7;
    			a[i][j] = 0;
    		}
    		while(a[i][n+1]%a[i][i])	a[i][n+1] += 7;
    		a[i][n+1] /= a[i][i];
    		a[i][i] = 1;
    		if(a[i][n+1]<=2)	a[i][n+1] += 7;
    	}
    	return 0;
    }
    int main(){
    	while(scanf("%d %d", &n, &m)!=EOF){
    		if(!n && !m)	break;
    		memset(a, 0, sizeof(a));
    		for(int i=1; i<=m; i++){
    			scanf("%d %s", &k, ss);
    			int tmp1=getDay();
    			scanf("%s", ss);
    			a[i][n+1] = (getDay()-tmp1+1+7) % 7;
    			while(k--){
    				scanf("%d", &uu); 
    				a[i][uu] = (a[i][uu] + 1) % 7;
    			}
    		}
    		int re=gauss();
    		if(re==-1)	printf("Inconsistent data.
    ");
    		else if(re==1)	printf("Multiple solutions.
    ");
    		else{
    			for(int i=1; i<n; i++)
    				printf("%d ", a[i][n+1]);
    			printf("%d
    ", a[n][n+1]);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    CMake命令笔记
    在Win10上,Android Studio检测不到设备的解决方案
    在MFC中使用大漠插件
    Win10更新后,IE和Edge以外的浏览器打开网页速度慢的解决方案
    jsp的自定义标签
    js和JQuery区别
    POI (Apache POI)
    TCP程序设计基础
    传参在mybatis的sql映射文件中正确获取
    I/O(输入/输出)
  • 原文地址:https://www.cnblogs.com/poorpool/p/8554783.html
Copyright © 2011-2022 走看看