This is a DP ...
f [i] [j] indicates the number of scenarios for the first group, sum of J
f [i] [j + a [i] [K]] <--f [i-1] [j]
1#include <cstdio>2#include <cstring>3#include <algorithm>4 using namespacestd;5 Const intn= the, m=11000;6 intf[n][m],a[n][n],maxl[n],maxn,n,q;7 intMain () {8maxn=0;9scanf"%d%d",&n,&Q);Ten for(intI=1; i<=n;i++){ Onescanf"%d", &a[i][0]); A for(intj=1; j<=a[i][0];j++){ -scanf"%d",&a[i][j]); - if(a[i][j]>Maxl[i]) themaxl[i]=A[i][j]; - } -maxn+=Maxl[i]; -Sort (a[i]+1, a[i]+a[i][0]+1); + } - for(intI=1; i<=a[1][0];i++) +f[1][a[1][i]]++;//initialization cannot be assigned to 1 A for(intI=2; i<=n;i++) at for(intj=1; j<=maxn;j++){ - if(!f[i-1][j]) - Continue; - for(intk=1; k<=a[i][0];k++) -f[i][j+a[i][k]]+=f[i-1][j]; - } in intp=1, j=0; - while(p<=Q) { toJ + +; + for(intI=1; i<=f[n][j];i++){ - if(P>Q)return 0; theprintf"%d", j); *p++; $ }Panax Notoginseng } - return 0; the}
STD
The building blocks of "P2409" Y