程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> SRM 621 D2L3: MixingColors, math

SRM 621 D2L3: MixingColors, math

編輯:C++入門知識

 

 

利用高斯消元求線性空間的基,也就是求矩陣的秩。

代碼:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define CHECKTIME() printf(%.2lf
, (double)clock() / CLOCKS_PER_SEC)
typedef pair pii;
typedef long long llong;
typedef pair pll;
#define mkp make_pair
#define FOREACH(it, X) for(__typeof((X).begin()) it = (X).begin(); it != (X).end(); ++it)

/*************** Program Begin **********************/

class MixingColors {
public:
	int minColors(vector  colors) {
		int res = 0;
		int n = colors.size();
		bool used[55];
		memset(used, 0, sizeof(used));

		for (int i = 31; i >= 0; i--) {
			int pivot = 0;
			for (int j = 0; j < n; j++) {
				if (used[j]) {
					continue;
				}
				if ((colors[j] >> i) & 0x1) {
					if (!pivot) {
						pivot = colors[j];
						used[j] = true;
						++res;
					} else {
						colors[j] ^= pivot;
					}
				}
			}
		}

		return res;
	}
};

/************** Program End ************************/


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved