248372026-02-15 23:42:44999Festés (50 pont)cpp17Hibás válasz 16/50704ms48948 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
#define int long long
using namespace std;

string numtostr(int BM, int n){
    string s="";
    int temp=BM;
    while(temp>0){
        if(temp%2)s='1'+s;
        else s='0'+s;
        temp/=2;
    }
    while(s.size()<n)s='0'+s;
    return s;
}

signed main() {
    int n,m;cin>>n>>m;
    vector<int> Ro(n);
    for(int i = 0;i<n;i++){
        cin>>Ro[i];
    }
    vector<vector<vector<int>>> Co(m+1,vector<vector<int>>(n,vector<int>(n)));
    for(int i = 1;i<=m;i++){
        for(int j = 0;j<n;j++){
            for(int k = j;k<n;k++){
                cin>>Co[i][j][k];
            }
        }
    }
    vector<vector<int>> Codp(m+1,vector<int>(1<<(n)));
    for(int i = 1;i<=m;i++){
        for(int BM=0;BM<(1<<n);BM++){
            string s=numtostr(BM,n);
            int sum=0;
            for(int I = 0;I<n;I++){
                if(s[I]=='1')sum+=Ro[I];
            }
            int biztkell=((1<<(n))-1)^BM;
            string ss=numtostr(biztkell,n);
            vector<int> tempdp(n,INT_MAX);
            tempdp[0]=(ss[0]=='0'?0:Co[i][0][0]);
            for(int I = 1;I<n;I++){
                int mnar=(ss[I]=='0'?0:Co[i][I][I])+tempdp[I-1];
                for(int j = 0;j<I;j++){
                    mnar=min(mnar,Co[i][j][I]+(j>0?tempdp[j-1]:0));
                }
                tempdp[I]=mnar;
            }
            Codp[i][BM]=tempdp[n-1]+(i==m?sum:0);
        }
    }
    for(int i = 1;i<=m;i++){
        for(int BM=0;BM<(1<<n);BM++){
            Codp[i][BM]+=Codp[i-1][BM];
        }
    }
    int mn=INT_MAX;
    for(int i : Codp[m])mn=min(mn,i);
    cout<<mn<<endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base16/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms316 KiB
3Hibás válasz0/2412ms30000 KiB
4Hibás válasz0/22ms316 KiB
5Elfogadva3/38ms820 KiB
6Hibás válasz0/282ms5156 KiB
7Időlimit túllépés0/2703ms48912 KiB
8Időlimit túllépés0/2703ms48948 KiB
9Időlimit túllépés0/2686ms48780 KiB
10Időlimit túllépés0/2679ms48692 KiB
11Időlimit túllépés0/2686ms48688 KiB
12Időlimit túllépés0/2703ms44812 KiB
13Időlimit túllépés0/2681ms44792 KiB
14Elfogadva2/2186ms22508 KiB
15Elfogadva3/3188ms22324 KiB
16Elfogadva3/3384ms30000 KiB
17Elfogadva2/2389ms30008 KiB
18Elfogadva3/3388ms30004 KiB
19Időlimit túllépés0/2690ms44084 KiB
20Időlimit túllépés0/2686ms46388 KiB
21Időlimit túllépés0/2703ms48436 KiB
22Időlimit túllépés0/2686ms48692 KiB
23Időlimit túllépés0/2688ms48692 KiB
24Időlimit túllépés0/2690ms48692 KiB
25Időlimit túllépés0/2704ms48692 KiB