比赛 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;
}