题意
从两侧选若干个砝码,改变天平的状态,求最少的个数, 为了让状态改变,我们直接把重的那一侧从大到小排序后,依次拿重的直至状态改变即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
long long le=0,ri=0;
cin>>n>>m;
vector<long long>l(n);
vector<long long>r(m);
for(int i=0;i<n;i++)
{
cin>>l[i];
le+=l[i];
}
for(int i=0;i<m;i++)
{
cin>>r[i];
ri+=r[i];
}
if(ri==le) cout<<"1"<<"\n";
else
{
sort(l.begin(),l.end());
sort(r.begin(),r.end());
if(ri>le)
{
int cnt=0;
for(int i=m-1;i>=0;i--)
{
ri-=r[i];
cnt++;
if(ri<=le)
{
cout<<cnt<<"\n";
break;
}
}
}
else
{
int cnt=0;
for(int i=n-1;i>=0;i--)
{
le-=l[i];
cnt++;
if(le<=ri)
{
cout<<cnt<<"\n";
break;
}
}
}
}
}
return 0;
}

京公网安备 11010502036488号