USACO Section2.2 Subset Sums 解题报告 【icedream61】
subset解题报告
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
把1~N分成两组,让他们的和相等,请问这样的分组有多少种?
但顺序可以颠倒,比如{3}、{2,1}和{2,1}、{3}算作一种。
【数据范围】
1<=N<=39
【输入样例】
7
【输出样例】
4
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
01背包问题。
把每个数当做一个物品,那么有N件物品,编号i=1~N,分别对应数1~N;物品i的所占容量Ci=i。
背包容量V=N×(N+1)÷4;显然只有N%4==1或N%4==2时本题答案为0,否则答案便是把背包放满的方案数d[V]除以2的结果了。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
这题见过,不过这次做第一次却是分析错了。没有想得太细,觉得代码很短就写来试试了。不过我倒是觉得,再有这种情况,如果是考试,那我就好好分析去;但如果是实际问题,我还是会试试,毕竟只需要花上一点时间,去检验一下对错,怎么想都比分析来得划算。
自己又想了想,没想出解决方案,网上简单搜了下,看到了算法是01背包DP。于是把《背包九讲》重新温习了一遍,感觉比第一次看明白多了,很感谢崔添翼前辈!
------------------------------------------------------------------------------------------------------------------------------------------------
【代码】
/*
ID: icedrea1
PROB: subset
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int N;
long long d[+]; int main()
{
ifstream in("subset.in");
ofstream out("subset.out"); in>>N;
if(N%==||N%==) out<<<<endl;
else
{
int S=N*(N+)>>; // result is d[S,N]/2
d[]=;
for(int i=;i<=N;++i)
for(int v=S;v>=i;--v) d[v]=d[v]+d[v-i];
out<<d[S]/<<endl;
} in.close();
out.close();
return ;
}
USACO Section2.2 Subset Sums 解题报告 【icedream61】的更多相关文章
- USACO Section2.1 The Castle 解题报告
castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- USACO Section2.1 Ordered Fractions 解题报告
frac1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】
holstein解题报告 --------------------------------------------------------------------------------------- ...
- USACO Section2.2 Preface Numbering 解题报告 【icedream61】
preface解题报告----------------------------------------------------------------------------------------- ...
- USACO Section2.1 Hamming Codes 解题报告 【icedream61】
hamming解题报告----------------------------------------------------------------------------------------- ...
- USACO Section2.3 Controlling Companies 解题报告 【icedream61】
concom解题报告------------------------------------------------------------------------------------------ ...
- USACO Section2.3 Money Systems 解题报告 【icedream61】
money解题报告------------------------------------------------------------------------------------------- ...
- USACO Section2.3 Zero Sum 解题报告 【icedream61】
zerosum解题报告----------------------------------------------------------------------------------------- ...
- USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】
nocows解题报告------------------------------------------------------------------------------------------ ...
随机推荐
- Windows 系统System帐号及权限
今天碰到一同事,在那里删除注册表,死活都删除不掉,想起以前在学校的时候老是被莫名的被别人叫过去修电脑(开玩笑,真觉得那时候的我比现在牛B很多),什么删除不掉的东西没见过,然后小小的百度了一下很快就帮他 ...
- git github添加远程仓库出错 remote origin already exists
在github上建立了仓库后,执行 git remote add origin https://github.com/zhangsan/sample.git时,提示 remote origin alr ...
- robotframework实战三--自定义关键字
在rf的实战1中,我的登录获取验证码就使用了自定义关键字,具体怎么做的,如下 1.新建文件夹 新建一个文件夹,我的MyLibrary,并且存放在site-packages下 2.编写代码 在pytho ...
- robotframework实战一
1.环境 1.Robotframework 安装环境,见以下帖子,只要保证python安装成功,安装了python的pip,就可以使用pip一路安装下去了.以下帖子也有基础的操作,帖子路径 http: ...
- Linux查看CPU和内存使用情况[转]
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...
- AMD、CMD、CommonJs和ES6对比
一.AMD(异步模块定义) AMD(异步模块定义)是RequireJS在推广过程中对模块定义的规范化产出.AMD是一个概念,RequireJs是对这个概念的实现.比如javascript语言是对ECM ...
- iOS App 瘦身方案
缩减iOS安装包大小是很多中大型APP都要做的事,一般首先会对资源文件下手,压缩图片/音频,去除不必要的资源.这些资源优化做完后,我们还可以尝试对可执行文件进行瘦身,项目越大,可执行文件占用的体积越大 ...
- sql server几种Join的区别测试方法与union表的合并
/* sql server几种Join的区别测试方法 主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别 ...
- Linux基础知识随笔记
linux文件属性 ls -h human-readable以人类可读的形式显示 -i 显示inode号码 [root@oldboyedu55-bjb ~]# ls -ihl total 8.0K 3 ...
- IDEA 编辑框光标闪烁
依次打开如下菜单: File -> Settings -> Editor -> General -> Appearance -> 选中 Caret blinking (m ...