143802025-01-10 17:50:26UVinceFestés (50 pont)cpp17Hibás válasz 4/50252ms32464 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, vector<ll> (n, -1)));
    for (auto &c : ccost){
        for (int i=0;i<n;i++){
            for (int j=i;j<n;j++){
                cin>>c[i][j];
            }
        }
    }
    

    ll ans=INT_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, INT_MAX);
            dp[0]=0;
            for (int j=1;j<=n;j++) {
                if ((bitmask>>(j-1)) & 1) dp[j]=dp[j-1];
                else {
                    dp[j]=ccost[i][0][j-1];
                    for (int k=2;k<=j;k++){
                        dp[j]=min(dp[j], dp[k-1]+ccost[i][k-1][j-1]);
                    }
                }
            }
            cost+=dp[n];
        }
        ans=min(ans,cost);
    }
    cout<<ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base4/50
1Elfogadva0/01ms508 KiB
2Hibás válasz0/01ms316 KiB
3Hibás válasz0/2138ms19840 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/33ms564 KiB
6Hibás válasz0/221ms3636 KiB
7Elfogadva2/2250ms32456 KiB
8Hibás válasz0/2229ms32308 KiB
9Hibás válasz0/2232ms32376 KiB
10Hibás válasz0/2252ms32464 KiB
11Hibás válasz0/2230ms32304 KiB
12Hibás válasz0/2210ms29712 KiB
13Hibás válasz0/2237ms29676 KiB
14Elfogadva2/275ms15156 KiB
15Hibás válasz0/371ms15156 KiB
16Hibás válasz0/3133ms19744 KiB
17Hibás válasz0/2127ms19900 KiB
18Hibás válasz0/3131ms19768 KiB
19Hibás válasz0/2206ms29236 KiB
20Hibás válasz0/2238ms30772 KiB
21Hibás válasz0/2229ms32136 KiB
22Hibás válasz0/2252ms32300 KiB
23Hibás válasz0/2229ms32308 KiB
24Hibás válasz0/2248ms32452 KiB
25Hibás válasz0/2238ms32308 KiB