-
algospot - quantizeAlgorithm/알고스팟 2020. 2. 3. 13:2912345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879//algospot - quantize#include <iostream>#include <vector>#include <algorithm>using namespace std;#define INF 200000000int N, S;vector<int> v;vector<int> subv;vector<int> subv2;vector<vector<int>> cache;void init(){cin >> N >> S;subv2 = subv = v = vector<int>(N);cache = vector<vector<int>>(N, vector<int>(S+1, -1));for(int i = 0; i<N; ++i)cin >> v[i];sort(v.begin(), v.end());subv[0] = v[0];for(int i = 1; i<N; ++i)subv[i] = subv[i-1] + v[i];subv2[0] = v[0]*v[0];for(int i = 1; i<N; ++i)subv2[i] = subv2[i-1] + v[i]*v[i];}int getMid(int start, int end){double u = subv[end] - subv[start] + v[start];u /= (end-start+1);int v = u;if(u - (double)v > 0.5)return v + 1;elsereturn v;}int mini(int start, int end){int a = getMid(start, end);int n = end-start + 1;int part = subv2[end] - subv2[start] + v[start]*v[start];int part2 = 2*a*(subv[end]-subv[start]+v[start]);int part3 = n*a*a;return part-part2+part3;}int dive(int from, int part){if(from == N)return 0;if(!part)return INF;int& ret = cache[from][part];if(ret != -1)return ret;ret = INF;for(int size = 0; size < N-from; ++size)ret = min(ret, mini(from, from+size) + dive(from+size+1, part-1));return ret;}int main(){int C; cin >> C;for(int tn = 0; tn<C; ++tn){init();cout << dive(0, S) << "\n";}}
cs https://www.algospot.com/judge/problem/read/QUANTIZE
algospot.com :: QUANTIZE
Quantization 문제 정보 문제 Quantization (양자화) 과정은, 더 넓은 범위를 갖는 값들을 작은 범위를 갖는 값들로 근사해 표현함으로써 자료를 손실 압축하는 과정을 말한다. 예를 들어 16비트 JPG 파일을 4컬러 GIF 파일로 변환하는 것은 RGB 색 공간의 색들을 4컬러 중의 하나로 양자화하는 것이고, 키가 161, 164, 170, 178 인 학생 넷을 '160대 둘, 170대 둘' 이라고 축약해 표현하는 것 또한 양자화라고 할
www.algospot.com
QUANTIZE
DP문제
cache[from][part] : 오름차순으로 정렬된 수열에서 from부터 시작하고, 사용할수 있는 숫자가 part개 남았을때 양자화한 결과의 최소를 저장하고 있는 배열
시간복잡도
총 N*S개의 부분문제와 각 부분문제당 N의 시간이 걸립니다.
O(S*N^2)
'Algorithm > 알고스팟' 카테고리의 다른 글
algospot - tripathcnt (0) 2020.02.03 algospot - tiling2 (0) 2020.02.03 algospot - pi (0) 2020.02.02 algospot - jlis (0) 2020.02.02 algospot - lis (0) 2020.02.02