QUANTIZE 문제 런타임 에러가 어디서 발생하는지 모르겠습니다. sonyy789 시작하는 인덱스 idx와 depth를 dp로 사용했습니다. gap은 모든 쌍(i,j) i <= j 에 대하여 최소 오차값을 미리 저장시켜놨습니다. [코드 입니다.] #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int t, n, s, inf = 1e9; int A[101], dp[101][11], gap[101][101]; int solve(int idx, int depth){ if(depth == s) return gap[idx][n]; int &ret = dp[idx][depth]; if(ret != inf) return ret; ret = gap[idx][n]; for(int i = idx; i < n; i++) ret = min(ret, gap[idx][i]+solve(i+1,depth+1)); return ret; } int main(){ int i, j, k; scanf("%d", &t); while(t--){ scanf("%d%d", &n, &s); if(n == 1 || n <= s){ printf("0\n"); continue; } // init memset(&gap, 0, sizeof(gap)); for(i = 1; i <= 100; i++) for(j = 0; j <= 10; j++) dp[i][j] = inf; for(i = 1; i <= n; i++) scanf("%d", &A[i]); sort(A+1, A+1+n); for(i = 1; i <= n; i++){ int p_sum = 0; for(j = i; j <= n; j++){ p_sum += A[j]; int avg = (int)(0.5+(double)p_sum/(j-i+1)); for(k = i; k <= j; k++) gap[i][j] += (avg-A[k])*(avg-A[k]); } } printf("%d\n", solve(1, 1)); } } 5년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
sonyy789
시작하는 인덱스 idx와 depth를 dp로 사용했습니다.
gap은 모든 쌍(i,j) i <= j 에 대하여 최소 오차값을 미리 저장시켜놨습니다.
[코드 입니다.]
5년 전