#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
const int N=100;
int main(){
cin.tie(0)->ios::sync_with_stdio(false);
int a,b,x,y;
cin>>a>>b>>x>>y;
vector<vector<ll>>dp(100,vector<ll>(100,INT_MAX));
dp[0][0]=0;
for(int i=0;i<=a+max(x,y);i++){
for(int j=0;j<=b+max(x,y);j++){
dp[i+x][j]=min(dp[i][j]+1,dp[i+x][j]);
dp[i][j+x]=min(dp[i][j]+1,dp[i][j+x]);
dp[i+y][j+y]=min(dp[i][j]+1,dp[i+y][j+y]);
}
}
ll ans=INT_MAX;
for(int i=a;i<=a+max(x,y);i++){
for(int j=b;j<=b+max(x,y);j++){
ans=min(ans,dp[i][j]);
}
}
cout<<ans<<endl;
return 0;
}
完全背包。题解区好像没这个做法,补一发

京公网安备 11010502036488号