-
발전소 - 1102Algorithm/BOJ 2020. 2. 23. 18:29123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//1102 - 발전소#include <iostream>#include <vector>using namespace std;#define INF 2000000000int N;int arr[16][16];int fstate = 0;int cond;vector<int> cache;void init(){cin >> N;for(int i = 0; i<N; ++i)for(int j = 0; j<N; ++j)cin >> arr[i][j];string s;cin >> s;for(int i = 0; i<s.size(); ++i)if(s[i] == 'Y')fstate |= (1 << i);cin >> cond;cache = vector<int>(1<<N, -1);}int dp(int state){if(__builtin_popcount(state) >= cond)return 0;int& ret = cache[state];if(ret != -1)return ret;ret = INF;for(int i = 0; i<N; ++i)if(!(state & (1<<i)))for(int j = 0; j<N; ++j)if((state & (1<<j)))ret = min(ret, dp(state | (1<<i)) + arr[j][i]);return ret;}int main(){init();int ans = dp(fstate);if(ans == INF)cout << -1;elsecout << ans;}
cs https://www.acmicpc.net/problem/1102
1102번: 발전소
은진이는 발전소에서 근무한다. 은진이가 회사에서 잠깐 잘 때마다, 몇몇 발전소가 고장이난다. 게다가, 지금 은진이의 보스 형택이가 은진이의 사무실로 걸어오고 있다. 만약 은진이가 형택이가 들어오기 전까지 발전소를 고쳐놓지 못한다면, 은진이는 해고당할 것이다. 발전소를 고치는 방법은 간단하다. 고장나지 않은 발전소를 이용해서 고장난 발전소를 재시작하면 된다. 하지만, 이때 비용이 발생한다. 이 비용은 어떤 발전소에서 어떤 발전소를 재시작하느냐에 따라 다르다
www.acmicpc.net
발전소
DP와 비트마스크를 이용했습니다!
'Algorithm > BOJ' 카테고리의 다른 글
최대 유량 - 6086 (0) 2020.02.25 열혈강호 - 11375 (0) 2020.02.24 외판원 순회 - 2098 (0) 2020.02.19 등산 - 1486 (0) 2020.02.18 DFS와 BFS (0) 2020.02.18