답안 #968133

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
968133 2024-04-23T07:54:04 Z berr 조교 (CEOI16_popeala) C++17
26 / 100
1136 ms 262144 KB
#include <bits/stdc++.h>
using namespace std;
const int N = 2e4+30;

int r[N][N];

void solve(){
    int n, t, s; cin >> n >> t >> s;
    vector<int> v(t);
    vector<vector<array<int, 2>>> g(t+1);
    vector dis(t+1, vector(s+2, (int)2e9));
    
    for(auto &i: v) cin >> i;

    vector<string> se(n);

    for(auto &i: se){
        cin >> i;
        int k=i[0]-'0';

        for(int l=1; l<t; l++){
            if(i[l]=='0'){
                for(int j=l-k; j<l; j++){
                    for(int g=j; g<l; g++){
                        r[j][g]++;
                    }
                }
                k=0;
            }
            else k++;
        }

        if(k){
            for(int j=t-k; j<t; j++){
                for(int g=j; g<t; g++){
                    r[j][g]++;
                }
            }        
        }
    } 

    for(int i=1; i<t; i++) v[i] += v[i-1];

    for(int i=0; i<t; i++){
        int ek=0;
        if(i>0) ek=v[i-1];

        for(int l=i+1; l<t; l++){

            g[i].push_back({l, (v[l-1]-ek)*r[i][l-1]});
        }
 
        g[i].push_back({t, (v[t-1]-ek)*r[i][t-1]});
    }

    priority_queue<array<int, 3>> pq;

    pq.push({0, 0, 0});
    dis[0][0]=0;
    while(pq.size()){

        auto [cos, ed, v]= pq.top();
        pq.pop();
        cos*=-1; 

        if(cos != dis[v][ed]) continue;

        for(auto [i, c]: g[v]){
            if(ed+1 <= s && cos+c < dis[i][ed+1]){
                dis[i][ed+1]=cos+c;
                pq.push({-(cos+c), (ed+1), i});
            }
        }
    }

    for(int i=1; i<=s; i++) cout<<dis[t][i]<<"\n";
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    /*freopen("popeala.in", "r", stdin);
    freopen("popeala.out", "w", stdout);
*/
    solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 2 ms 4444 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 33 ms 41496 KB Output is correct
2 Correct 25 ms 41228 KB Output is correct
3 Correct 27 ms 41248 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 374 ms 177872 KB Output is correct
2 Correct 609 ms 202556 KB Output is correct
3 Correct 1136 ms 247084 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 2 ms 4444 KB Output is correct
3 Correct 33 ms 41496 KB Output is correct
4 Correct 25 ms 41228 KB Output is correct
5 Correct 27 ms 41248 KB Output is correct
6 Correct 374 ms 177872 KB Output is correct
7 Correct 609 ms 202556 KB Output is correct
8 Correct 1136 ms 247084 KB Output is correct
9 Runtime error 275 ms 262144 KB Execution killed with signal 9
10 Halted 0 ms 0 KB -