Problem Statement for MixingColors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
SRM621 1000分 第3题算法解答_____________________________________________________________________________
看了算法解释,真心佩服,自己数学融汇贯通的能力差啊。当时怎么也想不出来。
数学原理:求rank,即通过最大线性无关组获得,计算机解法,高斯消元法(Gauss Elimination)
矩阵A的秩=rank(A) = rank({A1,A2, .... Am});
每一个数字,都可以表示为一个二进制向量,如3={0,1,1},向量的纬度 m = 最大数的位数(直接用32也可以)
以{3,5,6}为例:
于是:矩阵A = {3,5,6} =
0 1 1
1 0 1
1 1 0
采用高斯消元法:注,这个时候的消元不是通过线性加减,而是异或准则
0 1 1
1 0 1
1 1 0
选择主行(即第A(0,0)!=0即可)交换
1 1 0
0 1 1
1 0 1
第0行与第2行异或——》第2行
1 1 0
0 1 1
0 1 1
第1行与第二行异或
1 1 0
0 1 1
0 0 0
于是,对角线上不为0的个数= rank(A)=2,所以答案为2
import java.util.*; /** * User: Free * Date: 14-5-20 * Time: 下午11:51 */ public class MixingColors { public int minColors(int[] colors) { int len = colors.length; Arrays.sort(colors); int max = 1; int maxCount = 31; maxCount = Integer.toBinaryString(colors[colors.length - 1]).length(); int i = 0; byte[][] A = new byte[colors.length][maxCount]; for (; i < colors.length; i++) { String bits = Integer.toBinaryString(colors[i]); for (int j = 0; j < bits.length(); j++) { A[i][maxCount - bits.length() + j] = (byte) (bits.charAt(j) - '0'); } for (int j = 0; j < maxCount - bits.length(); j++) { A[i][j] = 0; } } //gauss elimination // process Row =r,Col=c,A[r][c]==0 int r = 0; int c = 0; int pivot; for (r = 0; r < colors.length; r++) { do { if (c >= maxCount) break; for (pivot = r; pivot < colors.length; pivot++) { if (A[pivot][c] == 1) { break; } } if (pivot < colors.length) { //swap ROW pivot,r if (pivot != r) { for (int j = c; j < maxCount; j++) { byte t = A[pivot][j]; A[pivot][j] = A[r][j]; A[r][j] = t; } } //eliminate; for (int curRow = r + 1; curRow < colors.length; curRow++) { if (A[curRow][c] != 0) { //XOR for (int j = c; j < maxCount; j++) { A[curRow][j] ^= A[r][j]; } } } c++; break; } else { c++; } } while (true); } //calc rank(A) int rankRow = 0; for (int row = 0; row < A.length; row++) { for (int col = 0; col < A[0].length; col++) { if (A[row][col] != 0) { rankRow++; break; } } } return rankRow; } public static void main(String args[]) { MixingColors mix = new MixingColors(); System.out.println(mix.minColors(new int[]{4, 8, 16, 32, 64, 128, 256, 512, 1024})); // System.out.println(mix.minColors(new int[]{3, 5, 6})); // System.out.println(mix.minColors(new int[]{1, 3, 4, 5, 6, 8})); // System.out.println(mix.minColors(new int[]{534, 251, 76, 468, 909, 410, 264, 387, 102, 982, 199, 111, 659, 386, 151})); // // System.out.println(mix.minColors(new int[]{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912})); } }
相关推荐
2. **控制策略设计**:SRM的控制策略通常涉及开关定时和电流控制,以实现最佳的转矩生产和效率。通过SIMULINK,我们可以设计并仿真各种控制算法,如六步换相、多脉冲换相等,分析其对电机性能的影响。 3. **性能...
一种SRM仿真,其中采用了CCC方法对SRM进行控制,后续可以添加转速环进行转速控制。
Hasp SRM 32bit usb virtual driver source code.
**2. 任务概述** 2.1 现状与目标:当前,企业在供应商管理上存在信息不统一、流程复杂等问题。目标是通过SRM系统实现采购流程自动化,提高数据准确性和决策效率。 2.2 项目运行环境:系统需适应企业现有的IT基础设施...
开启式螺杆水源热泵机组-中文
Driver HASP SRM emulator (x86)
【G-SRM供应商策略管理】是企业为了优化供应链管理,提升供应商绩效,降低供应风险而采取的一种系统化方法。此PPTX文件详细介绍了G-SRM的实施过程和关键业务流程,旨在帮助参与者理解并应用G-SRM策略。 首先,...
ERP项目实施方法论--调研阶段--SRM调研提纲
### VMware SRM方案详解 #### 方案描述与目标 VMware SRM(Site Recovery Manager)是一种先进的容灾解决方案,旨在确保企业的IT环境在面对自然灾害、人为错误或恶意攻击时能够迅速恢复,保持业务连续性。容灾的...
【G-SRM-SP-布局与策略】是一个与企业供应链管理(SCM)相关的主题,尤其是聚焦于供应商关系管理(Supplier Relationship Management, SRM)的布局与策略方面。SRM是企业管理与其供应商之间关系的一种方法,旨在提高...
蓝牙HC-05 主从机一体蓝牙模块 无线蓝牙串口透传模块 无线模块
2. `src/` 目录:源代码,可能包含实现了SRM-WoL功能的脚本或程序。 3. `tests/` 目录:测试用例,用于验证SRM-WoL功能是否正常工作。 4. `docs/` 或 `wiki/` 目录:项目文档,可能有技术细节、API参考和教程。 5. `...
2. **参考文献** - **2.1 规范性引用**:这部分列出了设计和实现边缘服务器子架构时必须遵循的技术标准和协议。 - **2.2 信息性引用**:提供了额外的背景资料和指导,但不强制执行。 3. **术语和定义** - 这部分...
执行部分代码M-SRM 用于预测智利北部中部融雪的修正融雪径流模型。 该存储库是作为 2013/2014 DEVELOP 项目的一部分创建的,该项目用于对智利北部中部融雪造成的可用水量进行粗略预测。 希望使用 M-SRM 的用户可以以...
2. SRM系统架构 - 解释SRM在SAP系统中的位置,它是如何与ERP、CRM等其他SAP模块集成的。 - 说明SRM组件的组成,比如SRM服务器、SRM工作台等。 3. 安装与配置SRM - 介绍如何部署SRM系统,包括软硬件要求。 - ...
标题中的“4phase-86srm.zip”指的是一个压缩包文件,包含了关于四相86式开关磁阻电机(Switched Reluctance Motor, SRM)的相关模型和可能的模拟数据。SRM是一种特殊的电动机类型,其工作原理基于电磁感应,通过...
G-SRM-SLM-生命周 期-01培训手册.pptx G-SRM-SP-供应商考核.pptx G-SRM-SP-布局与策略.pptx G-SRM-SP-综合绩效.pptx G-SRM-SR-供货比例-01培训手册.pptx G-SRM-SR-合同管理-01培训手册_.ppt G-SRM系统供应商绩效及...
SAP-SRM系统概览介绍
topcoder的数学类算法题目。一个整数被称为k-smooth当且仅当它的最大素因子不大于k,给定N和K,计算出1 - N中有多少个整数是k-smooth。1 , 1 <= K <= 1000.