Subset Sums_usaco2.2.2_dp
来源:互联网 发布:sublime text 3运行js 编辑:程序博客网 时间:2024/06/16 03:43
题目描述 Description
对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子集合的所有数字和是相等的:
{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,4,7} 和 {1,2,5,6}
{1,2,4,7} 和 {3,5,6}
给出N,你的程序应该输出划分方案总数,如果不存在这样的划分方案,则输出0。程序不能预存结果直接输出(不能打表)。
输入描述 Input Description
输入文件只有一行,且只有一个整数N
输出描述 Output Description
输出划分方案总数,如果不存在则输出0。
题解 Analysis
dp,
第一维仍然可以滚,大概就是这样
代码 Code
/* ID:wjp13241LANG:C++ PROG:subset*/ #include <stdio.h>using namespace std;long long f[781];int main(){ freopen("subset.in","r",stdin); freopen("subset.out","w",stdout); int n,m; scanf("%d",&n); m=(n+1)*n/4; f[0]=1; for (int i=1;i<=n;i++) for (int j=m;j>=i;j--) f[j]+=f[j-i]; if (m*4!=(n+1)*n) f[m]=0; printf("%lld\n",f[m]/2); fclose(stdin); fclose(stdout); return 0;}
0 0
- Subset Sums_usaco2.2.2_dp
- 2.2 subset
- USACO 2.2 Subset Sums (subset)
- USACO2.2.2 Subset Sums (subset)
- USACO2.2.2 Subset Sums (subset)
- Section 2.2 Subset Sums
- USACO 2.2 Subset Sums
- 2.2Subset Sums
- [usaco]2.2 Subset Sums
- USACO 2.2 Subset Numbers
- usaco 2.2.2 subset
- USACO 2.2 Subset Sums
- USACO 2.2 Subset Sums
- USACO 2.2:Subset Sums
- subset
- Subset
- Subset
- Subset
- 暑假集训 8.18 数据结构实验之图论六:村村通公路 (最小生成树)
- android 自定义进度条
- 3078. 【备战NOIP2012图论专项模拟试题】无线通讯网 (Standard IO)
- nginx支持websocket
- Java并发编程:深入剖析ThreadLocal
- Subset Sums_usaco2.2.2_dp
- cloudera hadoop 配置文件位置
- 浏览器缓存url请求
- 欢迎使用CSDN-markdown编辑器
- 使用SVG制作热区图
- ACM水题
- Navicat Preminum 安装及注册破解
- 百度富文本框编辑器不能上传图片
- 浅谈href=#与href=javascript:void(0)的区别