#include<iostream>#include<cstring>#include<algorithm>
using namespace std;intmain(){int t;cin>>t;for(int l=0;l<t;l++){int n,k;cin>>n>>k;if(n>=k){if(k==0)cout<<0<<endl;else cout<<1<<endl;continue;}else{int res = n,cnt=1;for(int i=n-1;i>=1;i--){
res = res + i;
cnt++;if(res>=k){
cout<<cnt<<endl;break;}
res = res + i;
cnt++;if(res>=k){
cout<<cnt<<endl;break;}}if(res<k)cout<<cnt<<endl;}}return0;}
B前缀和、双指针(补题)
#include<iostream>#include<cstring>#include<algorithm>
using namespace std;constint N =2e5+10;longlong n,a[N],s[N];longlong m;intmain(){int t;scanf("%d",&t);for(int l=0;l<t;l++){scanf("%lld %lld",&n,&m);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);sort(a,a+n+1);for(int i=1;i<=n;i++)s[i]=s[i-1]+a[i];longlong maxnum =0;for(int i=1,j=1;i<=n;i++){while(j<=n&&(a[i]-a[j]>1||s[i]-s[j-1]>m)){
j++;}
maxnum=max(maxnum,s[i]-s[j-1]);}printf("%lld\n",maxnum);}return0;}