- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有N个士兵(编号从1到N)。每个士兵都有 M 种不同技能(从 1 到 M 编号)中的一些技能子集。一支军队的技能组合是其组成士兵的技能组合。有多少不同的士兵子集满足有特定技能要求 Problem
根据解释,问题简化为找到这些数字的子集的数量,其 OR 正好等于所需的值,比如 req
令 f(i) 为满足 j OR i = i 的数字 j 的个数,则答案为
∑i(−1)^popcount(i xor req)(2^f(i) −1) 对于所有 i 使得 i OR req 是 req
这个公式是怎么来的,popcount是怎么描述它加减的。
最佳答案
这是我的看法。解决方法:不是对拥有某些技能的群体进行推理,让我们对没有某些技能的士兵群体进行推理。
因为这第二个属性可以很好地从组传播到所有成员。
在我们开始之前,稍微简化一下:
不失一般性,我们可以过滤掉至少有一项技能在要求的集合之外的士兵。因为子集的技能必须恰好是所需的技能集,所以永远不需要那些知道太多的聪明士兵。
从现在开始,我们假设所需的技能集是 {1, ... , R}
而且士兵的技能介于1
之间和 R
.
我们将需要 A_i
的定义(其中 i
属于 {1,..,R}
):
A_i
: 一组有技能的士兵 i
在他们的团队技能组合中。
换句话说,A_i
中的一组( inter
表示交集)是一组至少有一名士兵拥有技能编号 i
的组.
现在如果i<j
,
A_i inter A_j
= 有技能的士兵组 i
和 j
在他们的团队技能组合中。
换句话说,A_i inter A_j
中的一组是一个至少有一个属性的群
i
和 j
.i
,一身本事j
.和
A_1 inter A_2 ... inter A_R
是一组有技能的士兵1,.., R
在他们的团队技能中。
问题提出的问题可以用A_i
表示:
A_1 inter A_2 ... inter A_R
的大小是多少? ?
等于
2^2^R - size( comp(A_1) union comp(A_2) ... union comp(A_R) )
哪里comp(A)
是互补集。
现在,我们可以应用包含排除原则。
还有一个技巧可以让它变得可计算:
如果I
是 {1,..,R}
的子集, 然后是
intersection(comp(A_j) for all j in I)
是I
中没有技能的士兵组(作为一个组) .请注意,这样一个组中的士兵正是没有任何技能的士兵 I
.让我们定义 g(I)
作为集合中没有任何技能的士兵数量 I
.这样,我们就有了
size( intersection(comp(A_j) for all j in I) ) = 2^g(I)
最后,我得到的结果是:
2^2^R - sum( (-1)^(size(I)+1) * 2^g(I) , for each I subset of {1,..,R} and I non-empty)
希望对您有所帮助。如果还有什么不清楚的地方,请告诉我。
关于algorithm - 包含排除的动态规划技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31390568/
我在一本书(Interview Question)中读到这个问题,想在这里详细讨论这个问题。请点亮它。 问题如下:- 隐私和匿名化 马萨诸塞州集团保险委员会早在 1990 年代中期就有一个绝妙的主意
我最近接受了一次面试,面试官给了我一些伪代码并提出了相关问题。不幸的是,由于准备不足,我无法回答他的问题。由于时间关系,我无法向他请教该问题的解决方案。如果有人可以指导我并帮助我理解问题,以便我可以改
这是我的代码 public int getDist(Node root, int value) { if (root == null && value !=0) return
就效率而言,Strassen 算法应该停止递归并应用乘法的最佳交叉点是多少? 我知道这与具体的实现和硬件密切相关,但对于一般情况应该有某种指南或某人的一些实验结果。 在网上搜索了一下,问了一些他们认为
我想学习一些关于分布式算法的知识,所以我正在寻找任何书籍推荐。我对理论书籍更感兴趣,因为实现只是个人喜好问题(我可能会使用 erlang(或 c#))。但另一方面,我不想对算法进行原始的数学分析。只是
我想知道你们中有多少人实现了计算机科学的“ classical algorithms ”,例如 Dijkstra's algorithm或现实世界中的数据结构(例如二叉搜索树),而不是学术项目? 当有
我正在解决旧编程竞赛中的一些示例问题。在这个问题中,我们得到了我们有多少调酒师以及他们知道哪些食谱的信息。制作每杯鸡尾酒需要 1 分钟,我们需要使用所有调酒师计算是否可以在 5 分钟内完成订单。 解决
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我开始学习 Nodejs,但我被困在中间的某个地方。我从 npm 安装了一个新库,它是 express -jwt ,它在运行后显示某种错误。附上代码和错误日志,请帮助我! const jwt = re
我有一个证书,其中签名算法显示“sha256rsa”,但指纹算法显示“sha1”。我的证书 SHA1/SHA2 的标识是什么? 谢谢! 最佳答案 TL;TR:签名和指纹是完全不同的东西。对于证书的强度
我目前在我的大学学习数据结构类(class),并且在之前的类(class)中做过一些算法分析,但这是我在之前的类(class)中遇到的最困难的部分。我们现在将在我的数据结构类(class)中学习算法分
有一个由 N 个 1x1 方格组成的区域,并且该区域的所有部分都是相连的(没有任何方格无法到达的方格)。 下面是一些面积的例子。 我想在这个区域中选择一些方块,并且两个相邻的方块不能一起选择(对角接触
我有一些多边形形状的点列表,我想将其包含在我页面上的 Google map 中。 我已经从原始数据中删除了尽可能多的不必要的多边形,现在我剩下大约 12 个,但它们非常详细以至于导致了问题。现在我的文
我目前正在实现 Marching Squares用于计算等高线曲线,我对此处提到的位移位的使用有疑问 Compose the 4 bits at the corners of the cell to
我正在尝试针对给定算法的约束满足问题实现此递归回溯函数: function BACKTRACKING-SEARCH(csp) returns solution/failure return R
是否有包含反函数的库? 作为项目的一部分,我目前正在研究测向算法。我正在使用巴特利特相关性。在 Bartlett 相关性中,我需要将已经是 3 次矩阵乘法(包括 Hermitian 转置)的分子除以作
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
问题的链接是UVA - 1394 : And There Was One . 朴素的算法是扫描整个数组并在每次迭代中标记第 k 个元素并在最后停止:这需要 O(n^2) 时间。 我搜索了一种替代算法并
COM 中创建 GUID 的函数 (CoCreateGUID) 使用“分散唯一性算法”,但我的问题是,它是什么? 谁能解释一下? 最佳答案 一种生成 ID 的方法,该 ID 具有一定的唯一性保证,而不
在做一个项目时我遇到了这个问题,我将在这个问题的实际领域之外重新措辞(我想我可以谈论烟花的口径和形状,但这会使理解更加复杂).我正在寻找一种(可能是近似的)算法来解决它。 我有 n 个不同大小的容器,
我是一名优秀的程序员,十分优秀!