#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,t;
ll a[100010];
ll b[100010];
bool xsj(ll x){
// cout<<x<<endl;
ll ans=0;
for(int i=1;i<=n;i++){
b[i]=ceil(1.0*x/a[i]);
}
for(int i=1;i<=n;i++){
if(b[i]>0){
ans+=2*b[i]-1;
b[i+1]-=b[i]-1;
}
else{
ans++;continue;
}
if(ans>m) return false;
}
return ans<=m;
}
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n>>m;
for(int j=1;j<=n;j++) cin>>a[j];
ll l=1,r=LONG_LONG_MAX-1;
while(l<=r){
ll mid=(l+r)/2;
if(!xsj(mid)) r=mid-1;
else l=mid+1;
//memset(b,0,sizeof(b));
}
if(xsj(l))
cout<<l<<endl;
else cout<<l-1<<endl;
}
return 0;
}
数据全WA了。
https://www.luogu.com.cn/problem/P9889