Оптимизация дпшки (NEERC 2023)

Хотел решить C со вкошпа на тесте 16 выдает тайм лимит возможно большие входные данные помогите применить мемоизацию или другую оптимизацию

#include <bits/stdc++.h>

#define vi vector<int>
#define vll vector<long long>
#define vull vector<unsigned long long>
#define pair<int,int> pii
#define vii vector<pii>
#define sz(x) (int)(x.size())
#define f first
#define s second
#define pb push_back
#define endl "\n"
#define pii pair<int, int>
#define all(x) (x).begin(), (x).end()
#define rz resize
#define FOR(i, n) for(int i = 1; i < (n); i++)
#define rep(i, a, b) for(int i = a ; i < b ; i++)
#define Sum(a) accumulate(all(a), (int)0)
#define psum(a, b) partial_sum(a.begin(), a.end(), b.begin())
#define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 2e18
#define mod 1e7
    
using namespace std;
using ill = long long int;
using ll = int64_t;
using uint = uint32_t;
using ld = long double;
#if 0
    int x = min({a,b,c,d});
    ll dp(ll h, ll w) {
        if(h==1 or w==1) {
        return h*w;
        }
        return dp(h-1,w) + dp(1,w);
    }
#endif
ll dp(ll h,ll w) {
    if(h==1 and w==1) {
        return 1;
    }
    if(h>w) {
        return dp(h-1,w) + dp(1,w) + h*w;
    }
    else{
        return dp(h,w-1) + dp(h,1) + h*w;
    }
}
int main() {
	boost;
    ll h,w;
    cin>>h>>w;
    ll ans = dp(h,w);
    cout<<ans;
	
}```

Это не neerc

Подумай над тем как можно узнать dp(1,w) и dp(h, 1) формулой

3 лайка

Помимо дпшки там можно было решить формулой. Мне помогло когда я начал расписывать решения для квадратов

1 лайк