Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >具有相等和的子集

具有相等和的子集
EN

Stack Overflow用户
提问于 2013-10-21 16:10:50
回答 2查看 4.4K关注 0票数 0

我想计算集合S中有多少对不相交的子集S1和S2 (S1 U S2可能不是S),其中S1中的元素和= S2中的元素的和。

假设我已经计算了所有可能的2^n子集的所有子集和。如何找出多少个不相交的子集具有相等的和。

对于和值A,我们可以使用具有和A/2的子集的计数来解决这个问题吗?

例如:S ={1,2,3,4}

可能的各种S1和S2集合包括:

S1 = {1,2}和S2 = {3}

S1 = {1,3}和S2 = {4}

S1 = {1,4} nd S2 = {2,3}

下面是这个问题的链接:http://www.usaco.org/index.php?page=viewproblem2&cpid=139

EN

回答 2

Stack Overflow用户

发布于 2013-10-22 00:08:46

编辑:修正了愚蠢的复杂性错误。谢谢kash!

实际上,我相信您需要使用O(3^n)算法described here来回答这个问题-- O(2^n)划分算法只能很好地枚举所有不相交的子集对,这些子集的并集就是整个基本集。

正如我链接的答案中所描述的,对于每个元素,您实际上是在决定是否:

  1. 把它放在第一组,
  2. 把它放在第二组,或者
  3. 忽略它。

考虑到每种可能的方法,生成一个树,其中每个顶点都有3个子节点:因此O(3^n)时间。要注意的一件事是,如果你生成一个解决方案( S1,S2),那么你不应该计算解决方案( S2,S1):这可以通过在构建时始终保持两个集合之间的不对称性来实现,例如,强制S1中的最小元素必须始终小于S2中的最小元素。(这种不对称执行有一个很好的副作用,可以将执行时间减半:)

针对一种特殊(但在实践中可能很常见)情况的加速

如果您希望集合中有许多较小的数字,还有另一种可能的加速:首先,按升序对列表中的所有数字进行排序。选择一些最大值m,越大越好,但足够小,可以承受m大小的整数数组。我们现在将数字列表分为两部分,我们将分别处理:最初的数字列表,其和最多为m(该列表可能非常小),其余的部分。假设前k个<= n个数字适合第一个列表,并将其称为第一个列表Sk。原始列表的其余部分我们将称为S‘。

首先,将整数的大小为m的数组d[]初始化为全0,并照常解决Sk的问题--但不是只记录具有相等和的不相交子集的数量,而是为由前k个数字形成的每对不相交子集Sk1和Sk2递增d[abs(|Sk1| - |Sk2|)]。(同时增加d[0]以计算Sk1 = Sk2 ={}时的情况。)这个想法是,在第一阶段完成后,d[i]将记录从S的前k个元素生成具有i差的两个不相交子集的方式的数量。

其次,像往常一样处理余数(S') --但不是只记录具有相等和的不相交子集的数量,每当|S1'| - |S2'| <= m时,将d[abs(|S1'| - |S2'|)]添加到解决方案的总数中。这是因为我们知道有许多方法可以从具有这种差异的前k个元素构建一对不相交的子集-对于这些子集对(Sk1, Sk2)中的每一个,我们可以将Sk1或Sk2中较小的一个添加到S1‘或S2’中的较大者,而将另一个添加到另一个中,以得到一对具有相等和的不相交的子集。

票数 1
EN

Stack Overflow用户

发布于 2013-10-21 17:33:18

这是一个clojure解决方案。

它将s定义为1,2,3,4的集合,然后将所有子集定义为大小为1-3的所有集合的列表

一旦定义了所有子集,它就会查看所有的子集对,并只选择不相等、不与原始集并集以及其和相等的子集对

代码语言:javascript
运行
AI代码解释
复制
(require 'clojure.set)
(use 'clojure.math.combinatorics)

(def s #{1, 2, 3, 4})
(def subsets (mapcat #(combinations s %) (take 3 (iterate inc 1))))

(for [x all-subsets y all-subsets 
          :when (and (= (reduce + x) (reduce + y)) 
                     (not= s (clojure.set/union (set x) (set y))) 
                     (not= x y))] 
      [x y])

生成以下内容:

代码语言:javascript
运行
AI代码解释
复制
([(3) (1 2)] [(4) (1 3)] [(1 2) (3)] [(1 3) (4)])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19499544

复制
相关文章
合并两个结构完全相同的DataTable
两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到表3 1.规定公共的DataTable结
用户1055830
2018/01/18
2K0
合并两个结构完全相同的DataTable
网站就必须用响应式布局吗?MVC视图展现模式之移动布局
本文先引入给读者一个自己研究的机会,下次深入说明一下: 废话不多说,直接上图 新建一个mvc的项目 在视图里面添加一个移动端视图 正常访问一下 Bootstrap自带的响应式的方式(页面代码并没有改变
逸鹏
2018/04/10
1.1K0
网站就必须用响应式布局吗?MVC视图展现模式之移动布局
json在线解析以及json的结构有哪些
作为新手,第一次接触json,连它是什么,估计都不知道吧,json其实是一种数据交换格式,是基于一种文本格式,可以解析以及生成。换另一种方式来说,是可以将json内容转变为json文件进行格式化,当然如果转化过程中,格式出现了问题,还能够提醒。接下来我们具体来看看json在线解析吧。
用户8739990
2021/07/09
2.8K0
json在线解析以及json的结构有哪些
你必须知道的Pandas 解析json数据的函数-json_normalize()
Json是一个应用及其广泛的用来传输和交换数据的格式,它被应用在数据库中,也被用于API请求结果数据集中。虽然它应用广泛,机器很容易阅读且节省空间,但是却不利于人来阅读和进一步做数据分析,因此通常情况下需要在获取json数据后,将其转化为表格格式的数据,以方便人来阅读和理解。常见的Json数据格式有2种,均以键值对的形式存储数据,只是包装数据的方法有所差异:
润森
2022/09/22
3K0
你必须知道的Pandas 解析json数据的函数-json_normalize()
有比JSON更好的东西吗?
各种数据序列化格式进行比较。基本上,是回答以下问题:“能找到比JSON更好的东西吗?”。 这里找的是用于数据序列化的语言,而不是配置文件。
mariolu
2020/10/28
4.9K0
你必须知道的Pandas 解析json数据的函数
Json是一个应用及其广泛的用来传输和交换数据的格式,它被应用在数据库中,也被用于API请求结果数据集中。虽然它应用广泛,机器很容易阅读且节省空间,但是却不利于人来阅读和进一步做数据分析,因此通常情况下需要在获取json数据后,将其转化为表格格式的数据,以方便人来阅读和理解。常见的Json数据格式有2种,均以键值对的形式存储数据,只是包装数据的方法有所差异:
用户8949263
2022/04/08
1.9K0
你必须知道的Pandas 解析json数据的函数
测试人员必须编写代码吗?
通常在系统开发完成或大体完成的情况下参与验证测试系统的功能及其完整性。该角色属于非技术类,一般情况下不需要写代码。
测试小兵
2023/03/09
5130
测试人员必须编写代码吗?
nodejs写入json文件_json文件可以删除吗
哈喽!nodejs的文件系统,接触过node的对node的文件系统肯定不会陌生,这两天我就在思考一个问题,我是否可以在本地操作我的本地json文件,这样一个本地的文本数据库就有了,如果是便签之类,记录的软件,我完全可以不用连后台的数据库,我可以自己操作本地的json文件,自己用node写后台,答案是肯定的,下面我们就一起来实现一下吧,对本地json文件的增、删、改、查
全栈程序员站长
2022/11/04
3K0
nodejs写入json文件_json文件可以删除吗
你的布局设定方法靠谱吗?
本文不适合采用天才设计(Genius Design)方法的人士。 有一种“奇怪的”现象会经常的看到“很多设计师没有办法清楚的跟其他人解释他们是如何设计的,越细致的地方可能越是如此。比如,这个菜单的宽度为什么是200px?250px或者190px是否可以?图片的尺寸为什么是278px*196px?如何确定网页的宽度?“ 软件界面的设计师除了视觉本身以外,对于设计是否可以实现、大概以何种方式实现、规范可否被理解并且复制执行、设计实现的性价比与时间比等纬度都应有相当高度的认识。就像建筑设计师一样,他们一定很了解建
前朝楚水
2018/04/03
1.3K0
你的布局设定方法靠谱吗?
JSON Web Token 的结构是什么
JSON Web Tokens 由使用 (.) 分开的 3 个部分组成的,这 3 个部分分别是:
HoneyMoose
2020/10/02
1.9K0
JSON Web Token 的结构是什么
复杂JSON结构创建语法
最近在开发某个功能的过程中,需要调用一个第三方的接口。我查看某个接文档中请求参数示例时候,有点hold不住了,这这么也太复杂了。
FunTester
2021/12/02
6850
复杂JSON结构创建语法
JSON转成List结构数据
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
SmileNicky
2019/09/18
1.3K0
Go:Json转结构体
本文转载于(喜欢的盆友关注我们):https://mp.weixin.qq.com/s/mBbf0DuUh1Af3vi2DBE7DA
不背锅运维
2022/10/18
5430
Go:Json转结构体
excel 树结构json_excel转换json的强大工具
git clone https://github.com/koalaylj/xlsx2json.git
全栈程序员站长
2022/07/01
1K0
还不了解堆栈和队列吗?数据结构最基础、最重要的概念必须掌握!
堆栈和队列在数据结构中是最基础,但同时也是最重要的概念,很多小伙伴对两者不是很了解,本文就言简意赅的带大家了解一下堆栈和队列。
网络技术联盟站
2023/03/02
1.2K0
还不了解堆栈和队列吗?数据结构最基础、最重要的概念必须掌握!
C#-StructLayoutAttribute(结构体布局)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Align);当然我们也可以通过设置或编码来设置内存对齐的方式. 然而在.net托管环境中,CLR提供了更自由的方式来控制struct中Layout:我们可以在定义struct时,在struct上运用StructLayoutAttribute特性来控制成员的内存布局。默认情况下,struct实例中的字段在栈上的布局(Layout)顺序与声明中的顺序相同,即在struct上运用[StructLayoutAttribute(LayoutKind.Sequential)]特性,这样做的原因是结构常用于和非托管代码交互的情形。
vv彭
2021/03/08
1.1K0
C#-StructLayoutAttribute(结构体布局)
同事有话说 | 跨职能团队是必须的吗?
实际上,跨职能团队是由多个来自不同职能领域的人员组成的。但跨职能团队最大的一个特点是团队内的成员不仅来自多个职能领域,还可以扮演多个角色。也就是说,跨职能团队内部就可以协调解决职能空缺、时间紧张、项目进展推进慢等问题。
敏捷开发
2021/07/26
7270
你知道css圣杯布局与双飞翼布局吗?
更多请见:https://blog.csdn.net/weixin_44519496/article/details/120152697
马克社区
2022/07/27
1710
json字符串转为map结构,复杂json字符串转为map结构
开发的时候,经常会遇到json转为Map的需求,简单的json还好处理,如果json比较复杂,转换后为Map嵌套结构,就比较难处理。比如:将下面的json字符串转为Map接口:
IT云清
2019/01/22
8.6K0
点击加载更多

相似问题

烟囱尺寸必须完全相同吗?

10

结构化JSON布局

41

android支持库必须使用完全相同的版本吗?

10

MongoDB中的新文档必须与架构完全相同吗?

24

DOJO json布局结构不起作用

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档