题目描述如下:
大体翻译就是小明左边和右边口袋各有n和m个硬币,每个硬币的价值不同,用一下数组记录,问从左右口袋分别取一个硬币,总价值不超过k的方案数
没什么难度的签到题,数据范围也很小,直接暴力两层循环,一旦找到a[i]+b[j]小于等于k的情况就ans加一,为了复盘的完整性将其收录在题解里。
ac代码如下:
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
const int N=1010;
int a[N],b[N];
int t;
int l,r,mx;
void solve(){
int ans=0;
cin>>l>>r>>mx;
for(int i=0;i<l;i++){
cin>>a[i];
}
for(int i=0;i<r;i++){
cin>>b[i];
}
for(int i=0;i<l;i++){
for(int j=0;j<r;j++){
if(a[i]+b[j]<=mx) ans++;
}
}
cout<<ans<<endl;
}
signed main(){
cin>>t;
while(t--){
solve();
}
return 0;
}