티스토리 뷰
SWEA::2383::점심 식사시간
출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl
#include <bits/stdc++.h>
using namespace std;
struct P { int y, x; };
int T, t = 1, N, a[10][10], c[10], s[2], ans, pn, ps=0;
vector<P> vp,vs[2]; vector<int> q[2];
int cal(int r) {
q[0].clear(); q[1].clear();
for (int i = 0; i < pn; i++) q[c[i]].push_back(vs[c[i]][i].y);
sort(q[0].begin(), q[0].end()); sort(q[1].begin(), q[1].end());
for (int j = 0; j < 2; j++) {
if (q[j].size()) {
for (int i = 0; i < q[j].size(); i++) {
if (i > 2) {
if (q[j][i - 3] > q[j][i]) q[j][i] = (q[j][i - 3] + s[j]);
else q[j][i] = (q[j][i] + s[j] + 1);
continue;
}
q[j][i] += (s[j] + 1);
}
r = max(r, q[j][q[j].size()-1]);
}
}
return r;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0); cin >> T;
while (T--) {
cin >> N; vp.clear(); vs[0].clear(); vs[1].clear(); ans = 1e9; ps = 0; memset(c, 0, sizeof(c));
for (int i = 0; i < N; i++)for (int j = 0; j < N; j++) {
cin >> a[i][j];
if (a[i][j] == 1) vp.push_back({ i,j });
else if (a[i][j]>0) { vs[ps].push_back({ i,j }); s[ps++] = a[i][j]; }
}pn = vp.size();
for (int i = 0; i < 2; i++) for (int j = 0; j < pn; j++) vs[i].push_back({ (abs(vp[j].y-vs[i][0].y) + abs(vp[j].x-vs[i][0].x)),0 });
vs[0].erase(vs[0].begin()); vs[1].erase(vs[1].begin());
for (int i = 0; i < pow(2, pn); i++) {
for (int j = 0; j < pn; j++) {
if (i&(1 << j)) c[j] = 0;
else c[j] = 1;
}
ans = min(ans,cal(0));
}
cout << "#" << t++ << " " << ans << '\n';
}
return 0;
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA 5431] 민석이의 과제 체크하기 (0) | 2018.08.29 |
---|---|
[SWEA 2382] 미생물 격리 (0) | 2018.08.16 |
[SWEA 1244] 최대 상금 (0) | 2018.08.13 |
[SWEA 1224] 계산기3 (0) | 2018.08.10 |
[SWEA 1223] 계산기2 (0) | 2018.08.10 |
- Total
- Today
- Yesterday
- 팁
- 17144
- DFS
- SW Expert Academy
- scanf
- boj
- 새로운 게임 2
- 2018 카카오 블라인드 채용
- 17143
- DP
- hackerrank
- 17142
- 17779
- string
- 알고리즘
- SWEA
- STL
- 2018 KAKAO BLIND RECRUITMENT
- 삼성
- 트렌드
- 게리맨더링 2
- 17837
- 시간 복잡도
- 연구소 3
- 17140
- 입출력
- 이차원 배열과 연산
- 백준
- 미세먼지 안녕!
- 역량 테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |