- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我遇到了以下问题:
让我们G
是 2^N
的图表标记为 0
的顶点至 2^N-1
.这是一个有向无环图,以便有一条来自 a
的路径。至 b
必须满足以下两个条件:
a < b
a XOR b
(二进制)= 2^x
, 其中x>=0
我需要确定长度为 K
的路径总数(所有边的长度为 1
)。输入由 N
组成和 K
.
计算长度路径数量的简单方法 K
会看G
与任何其他图形一样,并使用条件来确定连接了哪些顶点。但是,该任务需要 N
和 K
尺码 2<=K<=N<=100000
.
2^100000
有点太多了,所以必须有更好的方法来计算这个。此外,我的执行时间仅限于 200
女士。
示例:对于 N = 4
和 K = 2
, 结果是 48
.
有什么想法吗?
最佳答案
所以基本上我们需要找到多少x0 < x1 < ... < xk < 2^N
有这样的:
xi xor xi+1 = 2^x
请注意,对于 xor
两个数是 2 的幂,xor 的结果必须恰好包含 1 位集。因此,这 2 个数字必须只有一个位置不同(否则,将在 xor 中设置更多位置,因为 xor
仅当操作数为不同位时才返回 1)。
假设我们从 0
开始.我们可以从它移动到任何标有 2
幂的节点.
然后,我们可以从该节点移动到在当前节点的设置位位置设置了位且在其他位置设置了位的任何节点。继续下去,考虑到我们必须按递增顺序生成序列。
例如:
000 -> 001 -> 011 -> 111
-> 101 -> 111
-> 010 -> 011 -> 111
-> 110 -> 111
-> 100 -> 101 -> 111
-> 110 -> 111
=> 6 = 3! solutions
0000 -> 0001 -> 0011 -> 0111 -> 1111
-> 1011 -> 1111
-> 0101 -> 1101 -> 1111
-> 0111 -> 1111
-> 1001 -> 1011 -> 1111
-> 1101 -> 1111
=> 6 solutions
=> another 3*6 for the other 3 possibilities from 0000
=> 24 solutions
所以,为了得到一条长度为k
的路径, 你需要从一个至少有 k
的整数开始取消设置 (0) 位。
所以你可以找出有多少n-bit
整数至少有 k
未设置位,找出有多少种可能性可以选择k
从那些,并将答案乘以 k!
.
找到多少n-bit
整数正好 k'
未设置位,可以使用二项式系数:
Binomial(n, k') = n! / [k'!*(n - k')!]
您还需要将其乘以 Binomial(k', k)
为了决定哪个k
您将要使用的位。
您需要对 k' = k to n
求和并将总和乘以 k!
.
这些将是一些巨大的数字。我猜你被问及对质数取模的结果,在这种情况下你将不得不使用模乘逆。
关于algorithm - 具有二元运算的巨大图形练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202441/
我通过在共享首选项中使用 GSON 将其转换为 json 来存储我的复杂对象。但是在检索它时,无法获得预期的字符串。 代码 这里 holderListCustomizationMap 是对象的复杂映射
因此,我正在尝试对大于可用RAM的gz压缩文件执行某种面向行的操作,因此排除了将其首先读取为字符串的情况。问题是,如何在rust(缺少gunzip file.gz|./my-rust-program)
我试图更好地理解为什么具有潜在大精度的大数字处理不一致,特别是在 JavaScript 及其本地化工具(例如 ECMA-402/Intl)中。我假设这与 float 的使用有关,但我想了解限制在哪里和
我们有一个 5GB 的 csv 文件,这是我们业务的主列表。 有多个类别,每个类别包含数千条记录。我们的目标是将每个类别导出为其自己的 csv 文件。 我们如何运行查询并导出数据? 运行 OSX。有没
基于上一个问题 ( see here ),我试图通过 xmlEventParse 读取许多大型 xml 文件,同时保存节点变化数据。使用此示例 xml:https://www.nlm.nih.gov/
我正在开发一个系统,它加载一个巨大的 CSV 文件(超过 100 万行)并保存到数据库中。每行也有超过一千个字段。 CSV 文件被视为一个批处理,每一行都被视为其子对象。在添加对象的过程中,每个对象都
借助node-google模块 我编写了一个简单的 Node 模块来为我的网络应用程序启用“文本网络搜索”功能,并在我的一个 View 中显示结果。 由于在来自同一 IP 的少量查询后 Google
我有相当大的 4D 阵列 [20x20x40x15000],我使用 h5py 将其作为 HDF5 文件保存到磁盘.现在的问题是我想计算整个数组的平均值,即使用: numpy.average(HDF5_
我在遗留代码库中连接巨大的 CString 时遇到问题。 CStrings 可以包含 base64 编码的文件,因此可能很大。在某些时候,这些 CString 会像这样连接起来: result +=
我正在尝试让我的服务器提供来自另一台服务器的巨大文件。但是,为了保护我的凭据免受该远程服务器的攻击,我不能简单地将请求者重定向到文件 url;另一方面,虽然使用 StreamingHttpRespon
感谢对此的任何见解,我有 2 个问题: 1) 弄清楚为什么我的本地数据库 oplog 庞大且不断增长 2) 安全删除(或重置)我的 local.oplog 以释放 18 GB 的浪费空间 场景:我一直
我的预期任务:获取大量数据(1 GB 及更多大小)json 字符串,操作(进行一些格式化、解析 json、重组 json 数据)并写入新格式化的 json 字符串作为响应。处理这种情况的更好方法是什么
我做了一个小的 Angular 4 应用程序,但我不知道如何应用 tree shaking 和 aot 编译。我运行的命令如下: ng build --prod --aot 但我得到的结果仍然很大,供
我是一名优秀的程序员,十分优秀!