| 比赛 | 
    2024暑期C班集训3 | 
    评测结果 | 
    AAWWWWWWWWWWWWWWWWWW | 
    | 题目名称 | 
    挑战 NPH | 
    最终得分 | 
    10 | 
    | 用户昵称 | 
    flyfree | 
    运行时间 | 
    0.013 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    4.05 MiB  | 
    | 提交时间 | 
    2024-07-03 09:11:15 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll T,n,k,x,f[1000005];
//bool cmp(node a,node b){
//    return a.val<b.val;
//}
ll mapz[10005],a[10005],idx,ans;
int main(){
    freopen("NPH.in","r",stdin);
    freopen("NPH.out","w",stdout);
    cin>>T;
    for(int ti=1;ti<=T;ti++){
        cin>>n>>k;
        if(n==1){
            cin>>x;
            cout<<x*k<<endl;
            continue;
        }
        memset(f,0,sizeof(f));
        memset(mapz,0,sizeof(mapz));
        memset(a,0,sizeof(a));
        idx=0;
        for(int i=1;i<=n;i++){
            cin>>x;
            if(!mapz[x]){
                a[++idx]=x;
            }
            mapz[x]++;
        }
        sort(a+1,a+1+idx);
//        for(int i=1;i<=idx;i++)cout<<a[i]<<endl;
        f[0]=1;
        for(ans=1;k;ans++){
//            cout<<ans<<" "<<k;
            for(int j=1;j<=idx;j++){
                if(a[j]<=ans){
                    f[ans]+=f[ans-a[j]]*mapz[a[j]];
                }else break;
            }
            k-=f[ans];
//            cout<<" "<<f[ans]<<endl;
            if(k<=0)break;
        }
        cout<<ans<<endl;
    }
    return 0;
}