usaco2.2 subset 01背包

P1466 [USACO2.2]集合 Subset Sums (dp,01背包) Sloution 将一个集合分为两部分,转换成1个背包,恰好装满sum/2的物品(sum &1==1,为奇数,不存在) ll f[10000];//不开long long见祖宗!! int a[45]; int main() { int n; cin >> n; f[0] = 1; a[1] = 1; _for(i, 2, n + 1) a[i] = a[i - 1] + i; //cout << a[n]; if(a[n]&1){ co. 阅读详情

题目链接


题意就是取 {1, 2, 3, ..., N} 的一个 subset,使得这个 subset 内元素的和为一个给定的值


(太久没做题的)我一开始竟然(想都没想)(并且数据范围都没看)(十分愚蠢地)写了递归,显然爆时间


再后来写了一个丑陋的 dp,第 i 个元素取: dp[i-1][j-i];  不取:dp[i-1][j];

最后才意识到这是个01背包,求将背包填满的方案总数

谁来救救我吧(叹


AC代码如下:

(注释部分是最初写的那种 dp)


/*
PROB: subset
LANG: C++
ID: fan_0111
*/
#include <iostream>
#include <cstdio>
//long long dp[40][1000];
long long dp2[1000];
using namespace std;
int main() {
	freopen("subset.in", "r", stdin);
	freopen("subset.out", "w", stdout);
	int n;
	cin >> n;
	int sum = n*(n+1)/2;
	if (sum & 1) {
		cout << 0 << endl;
	}
	else {
		int tot = sum/2;
//		dp[1][0] = dp[1][1] = 1;
//		for (int i = 2; i <= n; ++i) {
//			for (int j = 0; j <= tot; ++j) {
//				dp[i][j] = dp[i-1][j];
//				if (j-i >= 0) dp[i][j] += dp[i-1][j-i];
//			}
//		}
//		cout << dp[n][tot]/2 << endl;
		dp2[0] = 1;
		for (int i = 1; i <= n; ++i) {
			for (int j = tot-i; j >= 0; --j) {
				if (dp2[j]) dp2[j+i] += dp2[j];
			}
		}
		cout << dp2[tot]/2 << endl;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}


USACO 2.2.2 集合 Subset Sums 题解 仔细想一想就会发现这是一道dp,还是01背包类型的,是求方案数的。 看似是把数列分组,但是可视作把 N 个 重量分别为 1-N 的物体放入总重一定的背包中,且刚好放完的方案数计算。 递推式不难得出: f[i+1][j] = f[i][j] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( i &gt... 阅读详情

相关推荐

题解:洛谷 P1466 [USACO2.2] 集合 Subset Sums

题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。{3} 和 {1,2} 是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)如果。划分为两个子集,使两子集元素和相等。的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。{1,6,7} 和 {2,3,4,5}{2,5,7} 和 {1,3,4,6}{3,4,7} 和 {1,2,5,6}{1,2,4,7} 和 {3,5,6},你的程序应该输出划分方案总数。

团爸讲算法 233

R语言【taxlist】——subset():取taxlist对象的子集

taxlist对象的子集将通过逻辑操作或模式匹配来完成。子集可以引用包含在插槽taxonNames、taxonRelations或taxonTraits中的信息。 Arguments 参数【x】:taxlist 对象。参数【subset】:以逻辑向量或逻辑操作来实现子集。参数【slot】:字符值,指示应用于子集的slot。参数【keep_children】:逻辑值,是否保留子类群。参数【keep_parents】:逻辑值,是否保留父类群。参数【...】:传递给其他方法或从其他方法传递的进一步参数。参数

whitedrogen的博客 1051

第7.1章:StarRocks性能调优——查询分析

第7.1章:StarRocks性能调优——查询分析

爱吃辣条的博客 6476

USACO-Subset Sums

For many sets of consecutive integers from 1 through N (1 <= N <= 39), one can partition the set into two sets whose sums are identical.For example, if N=3, one can partition the set {1, 2, 3} in one w

superxtong的博客 366

别再硬拔了!用这3个终端命令轻松搞定Mac上移动硬盘‘被程序占用’的问题

本文介绍了3个终端命令解决Mac上移动硬盘‘被程序占用’的问题,包括使用`diskutil list`定位硬盘、`lsof`查找占用进程以及`diskutil unmount`安全卸载。这些方法能有效避免数据风险,提升操作效率,特别适合开发者和技术爱好者。

weixin_33507732的博客 294

LEC/FORMAL --- PARTIII debug

lec(logic equivalence checking)又叫formal check,是对ic design的综合,PR前后的设计进行逻辑对比检查的工具/手段,保证综合不改变rtl原始的logic function。目前用的较多的就是C家的formal工具。接下来介绍一下lec过程中遇到的问题以及debug手段。...

sinat_27691203的博客 7709

USACO 2.2 集合 Subset Sums

集合 题目描述 对于从1到N (1 {3} 和 {1,2} 这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数) 如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分法的子集合各数字和是相等的: {1,6,7} 和 {2,3,4,5} {注 1+6+7=2+3+4+5} {2,5,7} 和 {1,3,4,6} {3

闲人请进 1086

为 ABAP BSP 与 ICF 量身打造的错误页实践:从 CX_ROOT 到 SICF 的端到端落地指南

摘要 本文系统讲解SAP ABAP平台中BSP与ICF层的错误页定制方法。在BSP层,通过标记错误页属性和绑定ERROR_OBJECT异常对象,实现友好的错误展示与日志记录。ICF层通过SICF事务码统一配置错误页、登录与登出逻辑,支持服务树继承。文章包含可直接落地的代码示例,并针对现代Fiori架构给出演进建议,帮助开发者提升用户体验与系统安全性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 227

R语言 subset()函数用法

subset() 函数: subset(dataset , subset , select ) dataset 是要进行操作的数据集 subset 是对数据的某些字段进行操作 select 选取要显示的字段 ```{r spdep} hightech aa = subset(hightech,year==2001&province=="北京",select = c("year","province","PAT")) bb = subset(hightech,year==2001|province==

月下醉光遛鸟 7159

ComfyUI报错ModuleNotFoundError: No module named ‘comfy.options‘

好家伙,我一想我刚刚好像用了pip安装了comfy模块,不会是和ComfyUI自带的comfy模块产生冲突了吧。(3)还有的说是项目不是最新版,叫更新到最新版本的,好家伙,我报错之前根本没更新也没错,突然就报错的。(4)还有的说没有comfy.options这部分代码,叫自己去拉一个,我一看也有啊。我也不知道啥时候脑抽风去装这么个东西的,幸好我聪明机智,一眼就知道了。看把我气的,然后网上搜集各种资料,一个一个去试。

满目星辰 5159

uniapp [安卓苹果App端] - 详细实现下载文件保存到用户手机本地,指定文件存储位置路径及文件夹名称下载并保存,Uniapp app端将文件下载保存并储存到指定目录(手机系统存储空间权限检测)

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,app端下载文件,移动端文件下载,并保存到手机本地存储空间,uniapp下载文件保存到手机本地,iOS下载文件怎么保存,系统读写存储空间权限,下载文件到本地详细流程及源代码,保存自定义目录,uniapp,实现下载文件并保存到本地,文件后缀,如何指定手机的存放目录路径url,点击下载文档到手机中并提示存储位置,如何在uniapp中实现文件下载功能,uniApp文件下载,怎么指定文件保存目录,下载报错,没反应

🏆 前端领域优质创作者 1万+

usaco ★Subset Sums 集合

★Subset Sums 集合 对于从 1 到 N 的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果 N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的: {3} and {1,2} 26 这是唯一一种分发(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数) 如果 N=7,有四种方法能划分集合{1,2,3,4,5,

silence401的博客 351

python:实现矩阵SVD分解(附完整源码)

python:实现矩阵SVD分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 603

【01背包】P1466 [USACO2.2] 集合 Subset Sums

要求两个子集合的数字和是相等的,就相当于给定了限制条件在1~n中挑数字。先分析状态表示,状态表示一般跟着题目要求什么来设置。本题要求划分方案数,那么我们的状态表示就设置成方案数。代码实现上,如果写的是二维的状态转移方程,由于“选”是有条件限制的,所以“选”和“不选”是分开讨论的。但是注意,题目要求的实际上是划分成两个子集合这样的方案有多少个,而我们的状态表示。如果写成一维的,由于将条件省略进了循环中,就可以写在一起。求的是有多少个数值和为sum/2的子集合,所以最后。感觉本题最难的难点就是想出用。

2301_80361697的博客 265

C# 上位机程序中的数据采集与存储技术:从采集到持久化的完整解决方案

本文系统讲解C#上位机程序如何实现设备数据采集与持久化。主要内容包括:1)多种数据采集方式(串口通信、Modbus、OPC等)及代码示例;2)详细对比不同存储技术(CSV、SQLite、关系型数据库等)的优缺点;3)提供SQLite等存储实现代码;4)推荐分层系统架构(采集-缓存-存储-可视化);5)性能优化建议(多线程采集、异步存储、批量写入等)。文章强调应根据项目需求选择合适的技术方案,构建高效稳定的数据采集存储闭环系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1025

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

USACO Section 2.2 Subset Sums - 01背包的思想

题目要求是给一个N..让你求把1..N分成两堆~~并且两堆和相等的方案数..     如果1..N的和sum是奇数显然无论怎么分成两堆两堆都不可能相等..如果1..N的和sum是偶数..那么就可能存在分成两堆sum/2的情况出现...     对1..N做01背包..由于N最大就39..所以背包的空间最大也就是700多~~我是做到800...每次的转移就是s[i]+=s[i-k]..s[k]

zzyzzy12 1103

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

USACO Section 2.2 Subset Sums(整数划分01背包思想)

Subset SumsJRM For many sets of consecutive integers from 1 through N (1 <= N <= 39), one can partition the set into two sets whose sums are identical. For example, if N=3, one can partit...

angtongyou1893的博客 187

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

USACO - 2.2.2 - Subset Sums

  原创文章转载请注明出处 摘要:动态规划 ,0-1背包问题 一. 题目翻译 1. 描述: 对于从1到N (1 &lt;= N &lt;= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子集合的所有数字和是相等的:{3} 和 {1,2} 这是唯一一种分...

12312312341234 175

USACO Subset 整数划分01背包

又是去理解了一次01背包。 这道题目的意思就是给你一个N (N < 40)表示有一个集合{1,2,3,... n} 你要将它划分成相等的两个子集合,求有几种划分方式 如果N是奇数,那么显然不能由相同的两个Sub Sum组成,所以要输出“0” 现在我们定义一个数组Dp[i][j] 表示前i个数组合起来的和是j的种数 接下来就和01背包很像了 得到状态转移方程Dp[i][j] = D...

weixin_30648587的博客 210

Subset Sums集合 USACO-USACO阶梯-第2章.更大的挑战

题目描述 2.2.2 Subset Sums集合 (subset.pas/c/cpp) 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子集合的所有数字和是相等的: {3} 和 {1,2} 这是唯一一种分法(交换集合位置被认为是同一种划分方案,因...

算法小猪的博客 327

USACO-Subset Sums

http://ace.delos.com/usacoprob2?a=HM3rU6DlsPt&S=subset 这题最初的想法是:DFS,因为两个集合理论上是一样的,所以处理时只需处理一个集合,另一个集合自然就出来了。 DFS的程序很好写,这是主要的实现函数: void dfs(int suml,int h) //sum保存当前的集合元素的和,h保存上一次取的数 ...

anyuan5299的博客 197

USACO 2.2 Subset Sums 集合(subset)

Description 对于从1到N的连续整集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的: {3} and {1,2} 这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7}...

angsai7330的博客 196

USACO:2.2.2 Subset Sums 集合和

USACO:2.2.2 Subset Sums 集合 一、题目描述 ★Subset Sums 集合 对于从1 到N (1 的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的: {3} and {1,2} 26 这是唯一一种分发(交换集合位置被认为是同一种划分方案,因此不会增

蓝e的专栏 1587

USACO 2.2 Subset Numbers

这道题第一个想到的是采用DFS,果不其然倒在了超时下。苦思之后无解,就搜索了一下这道题的题解,发现大家都提示说要用动态规划来做。 最终采用了一维的DP。

云雀的工作本 497

[USACO]Subset Sums

Subset Sums JRM For many sets of consecutive integers from 1 through N (1 For example, if N=3, one can partition the set {1, 2, 3} in one way so that the sums of both subsets are identical: {3}

newcomer 614
上一篇: usaco2.1 hamming(blog 写到一半发现大事不妙
下一篇: usaco2.2 runround
kkkkahlua
博客等级 码龄12年 4粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值