首页 > 其他分享 >P1466 [USACO2.2] 集合 Subset Sums

P1466 [USACO2.2] 集合 Subset Sums

时间:2023-11-04 14:00:31浏览次数:25  
标签:Subset int P1466 Sums include sum USACO2.2

P1466 USACO2.2 集合 Subset Sums

毫无思路

如果不告诉我这题是DP题,我一定会爆搜。

看了题解,很妙。

居然也能套背包板子。

定义F[i][j]为在前\(i\)个数中选择一些数其和为\(j\)的方案总数。

显然转移方程F[i][j] = F[i - 1][j] + F[i - 1][j - i]

要么不选当前第\(i\) 个数,要么选。

最后答案输出F[sum/2]即可。

代码实现

显然能优化空间
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int n, sum;
int F[1010];

int main()
{
	cin >> n;
	sum = ((n + 1) * n) / 2;
	if (sum % 2)
	{
		cout << 0;
		return 0;
	}
	F[1] = 1;
	F[0] = 1;
	for (int i = 2; i <= n; i++)
	{
		for (int j = sum; j >= 0; j--)
		{
			if (j > i)
				F[j] = F[j] + F[j - i];
		}
	}
	cout << F[sum / 2];
	return 0;
}

标签:Subset,int,P1466,Sums,include,sum,USACO2.2
From: https://www.cnblogs.com/kdlyh/p/17809259.html

相关文章

  • [LeetCode] 1354. Construct Target Array With Multiple Sums 多次求和构造目标数组
    Youaregivenanarray target ofnintegers.Fromastartingarray arr consistingof n 1's,youmayperformthefollowingprocedure:let x bethesumofallelementscurrentlyinyourarray.chooseindex i,suchthat 0<=i<n andsettheva......
  • D. Prefix Permutation Sums
    D.PrefixPermutationSums吐槽:读题不仔细,还以为原数组的取值是任意的,最后看题解的时候才发现取值在[1,n],当时因为看不懂直接跳过了题意:给你一个缺了一个的前缀和数组,让你判断是否存在原数组,取值[1,n],每个数只存在一次可以分类讨论1缺少最后一个前缀和2缺少前面的前缀和......
  • Gym 103428B Subset
    CF传送门首先考虑没有选出的数互不相同的限制。设\(f_m\)为选出\(m\)个\(\in[0,n]\)的数,异或\(\text{popcount}=k\)的方案数。可以考虑枚举这\(m\)个数和\(n\)的\(\text{LCP}\)(要求后一位为\(1\)),然后钦定一位为\(1\)来满足\(\text{popcount}\)的限制。那......
  • AtCoder Grand Contest 056 D Subset Sum Game
    洛谷传送门AtCoder传送门考虑若\(n\)是奇数怎么做。枚举Alice第一次选的数\(a_i\),然后考虑把剩下的数两两结成一个匹配,若Bob选了其中一个,Alice就选另一个。容易发现排序后奇数位和它右边的偶数位匹配最优。那么设奇数位的和为\(A\),偶数位的和为\(B\),此时Alice获胜......
  • AT_abc321_f [ABC321F] #(subset sum = K) with Add and Erase 题解
    AT_abc321_f[ABC321F]#(subsetsum=K)withAddandErase题解题目大意现在有一个空箱子。给你两个数\(Q,K\),然后给你\(Q\)行,每一行代表一个操作:\(+x\),即向箱子里加一个权值为\(x\)的小球。\(-x\),即从箱子里把权值为\(x\)的小球拿一个出来。保证合法,即箱子......
  • [LeetCode][416]partition-equal-subset-sum
    ContentGivenanintegerarraynums,returntrueifyoucanpartitionthearrayintotwosubsetssuchthatthesumoftheelementsinbothsubsetsisequalorfalseotherwise. Example1:Input:nums=[1,5,11,5]Output:trueExplanation:Thearraycanb......
  • P1466 Subset Sum
    对于从1∼n的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的求可以划分的方案数1.动态规划longlongmaxval(intn){intsum=(1+n)*n/2;if(sum%2==1)return0;vector<longlong>dp(sum+1)dp[0]=1;//边界方案数为1for(inti......
  • [ABC238E]Rcange Sums
    前言一道水得不能再水的题,虽说在图论的题单里,但我真的没有用图,用了并查集就轻松\(AC\)。大意输入\(q\)个\(l,r\),表示知道\(l\)到\(r\)的区间,最后问能不能知道\(0\)到\(n\),能就输出Yes,不能就输出No。思路图论做法:可以把知道\(l\)到\(r\)的区间抽象为从\(l-1\)向\(r\)连一条边......
  • 【题解】[ARC158C] All Pair Digit Sums
    传送门题目分析我们可以先从简单一点的情况开始分析,如果现在\(a_{[i]},a_{[j]}\)都不会进位,那么最后的\(f(a_{[i]}+a_{[j]})=f(a_{[i]})+f(a_{[j]})\)。证明如下:有两个数\(x=\overline{x_nx_{n-1}....x_1}\)和\(y=\overline{y_my_{m-1}...y_1}\)。令\(n\lem\),由于不会......
  • CF1656H Equal LCM Subsets
    题面传送门首先有一个暴力的想法:依次查看左边每个数,对于左边每个数,计算右边未被删除的点与这个点的\(\gcd\)的\(LCM\),如果这个\(LCM\)等于当前这个数,说明这个点可以被左边的\(LCM\)整除,否则说明这个点不能整除,需要删掉。对于右边同理。这样暴力删除复杂度是\(O(n^3\logA......