관리 메뉴

너와 나의 스토리

(BOJ) 15787 기차가 어둠을 헤치고 은하수를 본문

Algorithm/비트마스킹 (Bit Masking)

(BOJ) 15787 기차가 어둠을 헤치고 은하수를

노는게제일좋아! 2019. 5. 17. 18:35
반응형

문제: https://www.acmicpc.net/problem/15787

 

문제풀이:

승객 태우기 v[w] = v[w] | (1 << e);

 

승객 내리기 v[w] = v[w] &~ (1 << e);

 

왼쪽으로 비트 밀기 v[w] = v[w] << 1;

왼쪽 끝 0으로 바꾸기 v[w] = v[w] &((1 << 21)-1);   

 

오른쪽으로 비트 밀기 v[w] = v[w] >> 1;

오른쪽 끝 0으로 바꾸기 v[w] = v[w] & ~1;

 

소스코드:

int n, m,cnt;
bool visit[1<<21];
vector<int> v;


int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL), cout.tie(NULL);

	cin >> n >> m;

	v.resize(n + 1);
	for (int i = 0; i < m; i++) {
		int q, w, e;
		cin >> q;
		if (q == 1) {
			cin >> w >> e;
			v[w] = v[w] | (1 << e);
		}
		else if (q == 2) {
			cin >> w >> e;
			v[w] = v[w] &~ (1 << e);
		}
		else if (q == 3) {
			cin >> w;
			v[w] = v[w] << 1;

			v[w] = v[w] &((1 << 21)-1);
		}
		else {
			cin >> w;
			v[w] = v[w] >> 1;
			v[w] = v[w] & ~1;
		}
	}
	for (int i = 1; i <= n; i++) {
		if (!visit[v[i]]) {
			cnt++;
		}
		visit[v[i]] = true;
	}
	cout << cnt << '\n';
	return 0;
}
반응형

'Algorithm > 비트마스킹 (Bit Masking)' 카테고리의 다른 글

[SW Expert Academy] 9942. 순열2 D4  (0) 2020.06.03
(BOJ) 1562 계단 수  (2) 2019.01.28
(BOJ) 3980 선발 명단  (0) 2019.01.23
(BOJ) 타일 채우기 ( 2718 / 2133)  (0) 2019.01.19
Comments