143902025-01-10 18:01:47UVinceFestés (50 pont)cpp17Elfogadva 50/50298ms38708 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n,m;
    cin>>n>>m;

    vector<ll> rcost(n);
    for (auto &i : rcost) cin>>i;
    vector<vector<vector<ll>>> ccost(m, vector<vector<ll>> (n+1, vector<ll> (n+1, -1)));
    for (auto &c : ccost){
        for (int i=1;i<=n;i++){
            for (int j=i;j<=n;j++){
                cin>>c[i][j];
            }
        }
    }
    

    ll ans=LLONG_MAX;

    for (int bitmask=0;bitmask<(1<<n);bitmask++){
        ll cost=0;
        for (int i=0;i<n;i++) if ((bitmask>>i) & 1) cost+=rcost[i];
        for (int i=0;i<m;i++){
            vector<ll> dp(n+1, LLONG_MAX);
            dp[0]=0;
            for (int j=1;j<=n;j++) {
                if ((bitmask>>(j-1)) & 1) dp[j]=dp[j-1];
                ll best = 1e18;
                for (int l = j; l >= 1; l--) {
                    best = min(best, dp[l-1]);
                    dp[j] = min(dp[j], ccost[i][l][j] + best);
                }
            }
            cost+=dp[n];
        }
        ans=min(ans,cost);
    }
    cout<<ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva2/2158ms32308 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/33ms564 KiB
6Elfogadva2/226ms4072 KiB
7Elfogadva2/2289ms38560 KiB
8Elfogadva2/2263ms38708 KiB
9Elfogadva2/2289ms38708 KiB
10Elfogadva2/2263ms38584 KiB
11Elfogadva2/2261ms38544 KiB
12Elfogadva2/2266ms35516 KiB
13Elfogadva2/2273ms35380 KiB
14Elfogadva2/282ms19752 KiB
15Elfogadva3/383ms19764 KiB
16Elfogadva3/3165ms32412 KiB
17Elfogadva2/2151ms32308 KiB
18Elfogadva3/3165ms32308 KiB
19Elfogadva2/2234ms34868 KiB
20Elfogadva2/2275ms36660 KiB
21Elfogadva2/2287ms38200 KiB
22Elfogadva2/2261ms38708 KiB
23Elfogadva2/2261ms38708 KiB
24Elfogadva2/2287ms38708 KiB
25Elfogadva2/2298ms38560 KiB