hdu 6092 Rikka with Subset

来源:互联网 发布:ipad怎么开淘宝网店 编辑:程序博客网 时间:2024/05/20 20:21

自己还是好菜啊。没想到背包。

#include<cstdio>#include<cstring>using namespace std;const int maxn = 1e5;typedef long long ll;ll a[maxn];ll f[maxn];ll c[maxn];int main(){    ll T, n, m;    scanf("%lld", &T);    while(T--){        int tot = 0;        memset(f, 0, sizeof(f));        memset(c, 0, sizeof(c));        scanf("%lld%lld", &n, &m);        for(int i = 0; i <= m; i++){            scanf("%lld", &a[i]);        }        f[0] = 1;        for(int i = 1; i <= m; i++){            a[i] -= f[i];            c[i] = a[i];            if(c[i]) {                for(int j = 1; j <= c[i]; j ++){                    for(int k = m; k >= i; k--){                        f[k] += f[k - i];                    }                }            }        }        tot = 0;        for(ll i = 1; i <= m; i++){            for(ll j = 1; j <= c[i]; j++){                printf("%lld%c", i, " \n"[++tot == n]);            }        }    }    return 0;}
原创粉丝点击