zoukankan      html  css  js  c++  java
  • USACO Subset Sums

    题目大意:将{1 2 3 4 .....n}分成两个集合,使得两个集合和相同,求方案数

    思路:唔,这题会爆long long !!!! 就是做一个背包,然后由于3 1+2属于同一个,所以最后背包方案数除以2

     1 /*{
     2 ID:a4298442
     3 PROB:subset
     4 LANG:C++
     5 }
     6 */
     7 #include<iostream>
     8 #include<fstream>
     9 #define maxn 500
    10 using namespace std;
    11 ifstream fin("subset.in");
    12 ofstream fout("subset.out");
    13 //#define fin cin
    14 //#define fout cout
    15 long long dp[maxn];
    16 int main()
    17 {
    18     long long n,sum=0;
    19     fin>>n;
    20     for(int i=1;i<=n;i++)sum+=i;
    21     if((sum&1)==1){fout<<0<<endl;return 0;}
    22     long long v=sum>>1;
    23     dp[0]=1;
    24     for(int i=1;i<=n;i++)
    25     {
    26         for(int j=v;j>=i;j--)
    27         {
    28             dp[j]+=dp[j-i];
    29         }
    30     }
    31     fout<<(dp[v]>>1)<<endl;
    32     return 0;
    33 }
  • 相关阅读:
    案例分析
    202103226-1 编程作业
    阅读任务
    准备工作
    结对作业
    案列分析
    202103226-1 编程作业
    《构建之法》有感
    准备工作
    案例分析作业
  • 原文地址:https://www.cnblogs.com/philippica/p/4320470.html
Copyright © 2011-2022 走看看