zoukankan      html  css  js  c++  java
  • hdu_5616_Jam's balance(暴力枚举子集||母函数)

    题目连接:hdu_5616_Jam's balance

    题意:

    给你一些砝码,和一些要被称出的重量,如果这些砝码能称出来输出YES,否则输出NO

    题解:我们想想,这题求组合方式,我们这里可以直接用母函数艹过去,这里我写的枚举子集的方式,其实就是母函数的形式

     1 #include<cstdio>
     2 #define F(i,a,b) for(int i=a;i<=b;i++)
     3 int abs(int a){return a<0?-a:a;}
     4 int a[30],dp[25][2511];
     5 int main(){
     6     int t,n,m,sum,x;
     7     scanf("%d",&t);
     8     while(t--){
     9         scanf("%d",&n),sum=0;
    10         F(i,1,n)scanf("%d",a+i),sum+=a[i];
    11         F(i,0,n)F(j,0,sum)dp[i][j]=0;
    12         dp[1][a[1]]=1;
    13         F(i,1,n)dp[i][0]=1;
    14         F(i,2,n)F(j,0,sum){
    15             dp[i][j]|=dp[i-1][j];
    16             dp[i][j+a[i]]|=dp[i-1][j];
    17             dp[i][abs(j-a[i])]|=dp[i-1][j];
    18         }
    19         scanf("%d",&m);
    20         while(m--)scanf("%d",&x),dp[n][x]?puts("YES"):puts("NO");
    21     }
    22     return 0;
    23 }
    View Code



  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/bin-gege/p/5696080.html
Copyright © 2011-2022 走看看