题意:有n个任务,m个工作者,存在k个人不在,第i个任务需要ti个工作者,被选的概率相同,选到不在的工作者则重选,求出分配次数期望值最小的分配方法。
思路:
推理结论如下
#include <bits/stdc++.h>
using namespace std;
int main(){
int tcase;
cin>>tcase;
while(tcase--){
int n,k;
//%*d读入一个整数,但是并不赋给任何变量。
scanf("%d%*d%d",&n,&k);
vector<int> t(n),idx(n);
for(int i=0;i<n;i++){
cin>>t[i];
}
//iota()函数对一个范围数据进行赋值
iota(idx.begin(),idx.end(),0);
if(k)
stable_sort(idx.begin(),idx.end(),[&](int a,int b){
return t[a]>t[b];
});
for(int i=0;i<n;i++)
printf("%d%c",idx[i]+1," \n"[i==n-1]);
}
return 0;
}