错点有很多,首先ans初值不是0,而且7行s>n不对,是s>m,13行ti是加上ht[s],return应在8行判断的外面 @[Jason_LiDongJin](/user/751572)
by Sunshine_su @ 2023-10-19 20:56:07
完整代码:
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,r,t[155],ht[155],hp[155],ans=9e9;
void dfs(int s,int sum,int ti){
if(ti>=r)return;
if(s>m){
if(sum>=k){
ans=min(ans,ti);
}
return;
}
dfs(s+1,sum+hp[s],ti+ht[s]);
dfs(s+1,sum,ti);
}
signed main(){
cin>>n>>m>>k>>r;
for(int i=1;i<=n;i++)cin>>t[i];
sort(t+1,t+n+1);
for(int i=1;i<=m;i++)cin>>ht[i];
for(int i=1;i<=m;i++)cin>>hp[i];
dfs(1,0,0);
int t_lft=r-ans,cnt=0;
for(int i=1;i<=n;i++){
if(t_lft>=t[i])cnt++,t_lft-=t[i];
else break;
}
cout<<cnt;
return 0;
}
```
by Sunshine_su @ 2023-10-19 20:58:54
~~给个关注呗~~
by Sunshine_su @ 2023-10-19 20:59:37