티스토리 뷰

 

#define fore(i, l, r) for(int i = int(l); i < int(r); i++)
fore (i, 0, q) {
        char c;
        cin >> id[i] >> c;
        id[i]--;
        ch[i] = c == '+' ? 1 : -1;
    }

0부터 q미만까지 입력받기

fore (mask, 1, 1 << n) fore (lst, 0, n) {
        if (d[mask][lst] == INF)
            continue;
        fore (nxt, 0, n) {
            if ((mask >> nxt) & 1) // 비트마스킹 할 때 1인지 확인하는 방법 기억해두기
                continue;
            int nmask = mask | (1 << nxt);
            d[nmask][nxt] = min(d[nmask][nxt], d[mask][lst] + minDist[lst][nxt]);
        }
    }

비트마스킹 dp 순환

const int INF = int(1e9);

INF 전처리

 

위 내용보다는 문제를 해결하기 위한 풀이를 세우는 것이 중요하다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
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 29 30
31
글 보관함