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