USACO-Section2.2 Subset Sums
2017-9-1
题目描述
将1到n总共n个数分成两个数总和相同的集合,求出所有的种数
解答
一看到直接深搜,共2^n次方,剪枝只到36就超时了,最后用动归
代码
/*
ID: 18795871
PROG: subset
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
const int N = 800;ifstream fin("subset.in");
ofstream fout("subset.out");long dp[N+1][N+1];int main(){int i,j,n;int sum;fin>>n;sum=(n)*(n+1)/2;if (n==1||n==2||sum%2!=0){fout<<"0"<<endl;return 0;}sum/=2;dp[0][0]=1;for (i=1;i<=n;i++){for (j=1;j<=sum;j++){dp[i][j]=dp[i-1][j-i]+dp[i-1][j];}}fout<<dp[n][sum]<<endl;return 0;
}
一开始写的超时代码
/*
ID: 18795871
PROG: subset
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;ifstream fin("subset.in");
ofstream fout("subset.out");int n;
long cnt=0;
int sum;void dfs(int m,long s1,long s2){if (m<=0) return ;if (s1+m*(m+1)/2<sum/2||s2+m*(m+1)/2<sum/2) return ;if (s1==sum/2||s2==sum/2){cnt++;return ;}if (s1+m<=sum/2) dfs(m-1,s1+m,s2);if (s2+m<=sum/2)dfs(m-1,s1,s2+m);return ;
}int main(){fin>>n;sum=(n)*(n+1)/2;if (n==1||n==2||sum%2!=0){fout<<"0"<<endl;return 0;}dfs(n,0,0);fout<<cnt/2<<endl;return 0;
}
USACO-Section2.2 Subset Sums相关推荐
- usaco ★Subset Sums 集合
★Subset Sums 集合 对于从 1 到 N 的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果 N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数 ...
- USACO 2.2.2 Subset Sums解题报告
分类:DP,递推,记忆化搜索 作者:ACShiryu 时间:2011-7-15 Subset Sums JRM For many sets of consecutive integers from 1 ...
- 洛谷P1466 集合 Subset Sums
P1466 集合 Subset Sums 162通过 308提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 对于从1到N (1 ...
- Codeforces 348C:Subset Sums
Codeforces 348C:Subset Sums 题目链接:http://codeforces.com/contest/348/problem/C 题目大意:给出$n$个数,$m$个集合(每个集 ...
- usaco 2.1.4 Subset Sums 【母函数】
(1+x)*(1+x^2)*(1+x^3)*--*x^n 则 x^(n*(n+1)/2) 的系数一半为ans /*ID: w.x.f.g1PROG: subsetLANG: C++ */#incl ...
- 集合 Subset Sums
题目描述 对于从1到N的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的: {3} and ...
- P1466 集合 Subset Sums 搜索+递推+背包三种做法
题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子 ...
- USACO Section2.1 Hamming Codes 解题报告 【icedream61】
hamming解题报告 ---------------------------------------------------------------------------------------- ...
- USACO Section2.2 Preface Numbering 解题报告 【icedream61】
preface解题报告 ---------------------------------------------------------------------------------------- ...
最新文章
- 让人又爱又恨的Mysql多表查询
- 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)
- Android项目创建欢迎页
- Autofac IoC容器基本使用步骤【1】
- exchange 删除邮件
- 主动断开socket链接_TCP连接与断开详解(socket通信)
- switch java 语法_Java_基础语法之switch语句
- 浅析libuv源码-node事件轮询解析(1)
- linux文件符数据,linux – 如何监视文件描述符以获得新数据的可用性?
- springboot+自定义注解实现灵活的切面配置
- 【自爆系列】浅谈我前端开发的那些糗事
- php session 设置无效
- 微信小程序源代码基本文件类型
- python烧录单片机_mac实现烧写51单片机
- android office转pdf插件,Office自带Word转PDF插件 让office的另存为可存储为PDF文件
- 卷积码 c语言编码,利用c语言实现卷积码编码器示例
- html5手机摄像头相册批量,h5调用手机摄像头/相册(示例代码)
- Android开发—基于OpenCV实现相机实时图像识别跟踪
- 7-22 龟兔赛跑 (20 分)
- Vue单向绑定与双向绑定解析
热门文章
- 嵌入式开发板02---点亮LED升级版
- NBT:你想成为计算生物学家?
- Hemberg-lab单细胞转录组数据分析(八) - Scater包输入导入和存储
- NOI入门级:算法之动态规划
- 确定性有穷自动机(DFA算法) 非确定性有穷自动机(NFA算法)
- 1.3编程基础之算术表达式与顺序执行 20 计算2的幂
- 整理的3500个常用汉字的调用字典
- python的实例属性和静态属性_Python面向对象之静态属性、类方法与静态方法分析...
- pandas plot label_Python+Pandas | 分析比特币与股票市场的关系
- SpringBoot笔记-注册后发送邮箱点击激活(异步)