刷题——6092 Rikka with Subset

来源:互联网 发布:淘宝包含哪些部门 编辑:程序博客网 时间:2024/06/05 21:17
/*
对于b[i],从1遍历到m,头一个不是0的数一定是a[0],我们可以先删掉b[i]中a[0]的影响
这时从i+1遍历到m,若b[x]不为0,则x-i若不为0,则b[x-i]的方案数+i,即为i在b[x]中的方案数,这时b[x]-=b[x-i]即可
重复多次即可求出a[] 
*/
#include <stdio.h>
#define ll long long
ll b[10100];
void solve(int x,int m){
    b[x]--;
    for(int i=x+1;i<=m;i++){
        b[i]-=b[i-x];
    }
}
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n,m;
        scanf("%d %d",&n,&m);
        for(int i=0;i<=m;i++){
            scanf("%I64d\n",&b[i]);
        }    
        while(n--){
            for(int i=1;i<=m;i++){
                if(b[i]>0){
                    solve(i,m);
                    printf("%d",i);
                    if(n)printf(" ");
                    break;
                }
            }
        }
        printf("\n");
    }
    return 0;
}
原创粉丝点击