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相关推荐

  1. usaco ★Subset Sums 集合

    ★Subset Sums 集合 对于从 1 到 N 的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果 N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数 ...

  2. USACO 2.2.2 Subset Sums解题报告

    分类:DP,递推,记忆化搜索 作者:ACShiryu 时间:2011-7-15 Subset Sums JRM For many sets of consecutive integers from 1 ...

  3. 洛谷P1466 集合 Subset Sums

    P1466 集合 Subset Sums 162通过 308提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 对于从1到N (1 ...

  4. Codeforces 348C:Subset Sums

    Codeforces 348C:Subset Sums 题目链接:http://codeforces.com/contest/348/problem/C 题目大意:给出$n$个数,$m$个集合(每个集 ...

  5. 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 ...

  6. 集合 Subset Sums

    题目描述 对于从1到N的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的. 举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的: {3} and ...

  7. P1466 集合 Subset Sums 搜索+递推+背包三种做法

    题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子 ...

  8. USACO Section2.1 Hamming Codes 解题报告 【icedream61】

    hamming解题报告 ---------------------------------------------------------------------------------------- ...

  9. USACO Section2.2 Preface Numbering 解题报告 【icedream61】

    preface解题报告 ---------------------------------------------------------------------------------------- ...

最新文章

  1. 让人又爱又恨的Mysql多表查询
  2. 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)
  3. Android项目创建欢迎页
  4. Autofac IoC容器基本使用步骤【1】
  5. exchange 删除邮件
  6. 主动断开socket链接_TCP连接与断开详解(socket通信)
  7. switch java 语法_Java_基础语法之switch语句
  8. 浅析libuv源码-node事件轮询解析(1)
  9. linux文件符数据,linux – 如何监视文件描述符以获得新数据的可用性?
  10. springboot+自定义注解实现灵活的切面配置
  11. 【自爆系列】浅谈我前端开发的那些糗事
  12. php session 设置无效
  13. 微信小程序源代码基本文件类型
  14. python烧录单片机_mac实现烧写51单片机
  15. android office转pdf插件,Office自带Word转PDF插件 让office的另存为可存储为PDF文件
  16. 卷积码 c语言编码,利用c语言实现卷积码编码器示例
  17. html5手机摄像头相册批量,h5调用手机摄像头/相册(示例代码)
  18. Android开发—基于OpenCV实现相机实时图像识别跟踪
  19. 7-22 龟兔赛跑 (20 分)
  20. Vue单向绑定与双向绑定解析

热门文章

  1. 嵌入式开发板02---点亮LED升级版
  2. NBT:你想成为计算生物学家?
  3. Hemberg-lab单细胞转录组数据分析(八) - Scater包输入导入和存储
  4. NOI入门级:算法之动态规划
  5. 确定性有穷自动机(DFA算法) 非确定性有穷自动机(NFA算法)
  6. 1.3编程基础之算术表达式与顺序执行 20 计算2的幂
  7. 整理的3500个常用汉字的调用字典
  8. python的实例属性和静态属性_Python面向对象之静态属性、类方法与静态方法分析...
  9. pandas plot label_Python+Pandas | 分析比特币与股票市场的关系
  10. SpringBoot笔记-注册后发送邮箱点击激活(异步)