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】的更多相关文章

  1. USACO Section2.1 The Castle 解题报告

    castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. USACO Section2.1 Ordered Fractions 解题报告

    frac1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  3. USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】

    holstein解题报告 --------------------------------------------------------------------------------------- ...

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

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

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

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

  6. USACO Section2.3 Controlling Companies 解题报告 【icedream61】

    concom解题报告------------------------------------------------------------------------------------------ ...

  7. USACO Section2.3 Money Systems 解题报告 【icedream61】

    money解题报告------------------------------------------------------------------------------------------- ...

  8. USACO Section2.3 Zero Sum 解题报告 【icedream61】

    zerosum解题报告----------------------------------------------------------------------------------------- ...

  9. USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】

    nocows解题报告------------------------------------------------------------------------------------------ ...

随机推荐

  1. ffmpeg控制台上不能输出信息的解决办法

    最近遇到下面类似的问题 我下载了最新版本(1.1.2)版本的ffmpeg,在windows平台下使用msys+mingw编译成功后,我输入命令后,一点输出信息都没有,例如: ffmpeg -v 这时候 ...

  2. java 中的Number类 Character类 String类 StringBuffer类 StringBuilder类

    1. Number类 Java语言为每一个内置数据类型提供了对应的包装类.所有的包装类(Integer.Long.Byte.Double.Float.Short)都是抽象类Number的子类.这种由编 ...

  3. 如何使用事务码SMICM分析ABAP代码发起的HTTP请求的错误ICM_HTTP_SSL_PEER_CERT_UNTRUSTED

    当我用CL_HTTP_CLIENT往一个外网的url发请求时,遇到错误:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED 错误是从这段ABAP代码里抛出来的: CALL METHOD ...

  4. 【JavaScript 封装库】BETA 2.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  5. MySQL锁小结

    锁的作用:避免并发请求时对同一个数据对象同时修改,导致数据不一致.   怎么加锁: 1.事务T1在对某个数据对象R1操作之前,先向系统发出请求,对其加锁L1. 2.之后,事务T1对该数据对象R1有了相 ...

  6. Last_SQL_Errno: 1050

    主库上create table,从库上存在. 报错信息如下所示:                Last_SQL_Errno: 1050                Last_SQL_Error: ...

  7. CodeForces 506D Mr. Kitayuta's Colorful Graph

    brute force ? 其实是平方分解.很容易想到的是每一个颜色建一个图,然后并查集维护一下连通性. 问题在于颜色有O(m)种,每种颜色的图点数都是O(n)的,因此并查集的空间只能重复利用. 但是 ...

  8. Kruskal算法求最小生成树

    Kruskal算法是根据权来筛选节点,也是采用贪心算法. /// Kruskal ///初始化每个节点为独立的点,他的祖先为自己本身 void made(int n) { ; i<=n; i++ ...

  9. theano中tensor的构造方法

    import theano.tensor as T x = T.scalar('myvar') myvar = 256 print type(x),x,myvar 运行结果: <class 't ...

  10. VisualSVN 4.0.10 破解版 附上破解过程

    VisualSVN一般情况下使用不需要破解,可以直接使用社区授权.但是社区授权不支持域用户. 如果要再域下面使用就需要破解了. 原版的VisualSVN和破解后的DLL已打包上传(仅供学习使用) 破解 ...