답안 #740450

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
740450 2023-05-12T13:34:29 Z Ahmed57 조교 (CEOI16_popeala) C++14
0 / 100
37 ms 1296 KB
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

using namespace std;
int main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int n,t,s;cin>>n>>t>>s;
    vector<string>r(n+1);
    int p[t+1] = {0};
    for(int i = 1;i<=t;i++){cin>>p[i];p[i]+=p[i-1];}
    for(int i = 1;i<=n;i++)cin>>r[i];
    int a[t+1][n+1];
    memset(a,0,sizeof a);
    for(int i = 1;i<=t;i++){
        for(int j = 1;j<=n;j++){
            a[i][j] = (r[j][i-1]=='0'?i:a[i-1][j]);
        }
    }
    for(int i = 1;i<=t;i++){
        a[i][0] = i;
        sort(a[i],a[i]+n+1);
    }
    int dp[s+1][t+1];
    memset(dp, 0x3f, sizeof(dp));
    dp[0][0] = 0;
    for(int i = 1;i<=s;i++){
        int b[n+1];
        for(int j = 0;j<=n;j++)b[j] =0x3f;
        for(int j = 1;j<=t;j++){
            for(int k = 0;k<=n;k++){
                for(int l=a[j-1][k]; l<a[j][k]; ++l)
					b[k]=min(dp[i-1][l]-p[l]*k,b[k]);
				dp[i][j]=min(b[k]+p[j]*k,dp[i][j]);
            }
        }
        cout<<dp[i][t]<<"\n";
    }
}
//
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 468 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 37 ms 1296 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -