본문 바로가기

비트마스킹9

[백준][비트마스킹] 1094 막대기 c++ 구현 목차https://www.acmicpc.net/problem/1094문제 코드 구현 방향2의 배수인데 경우를 구하는 것이어서 비트마스킹으로 쉽게 풀었다.켜진 비트수만 세어주면 되는 문제였다.  코드 구현#include#include#include#include#include#include#includeusing namespace std;int n;int main() { int cnt = 0; cin >> n; for (int i = 0; i 2024. 7. 15.
[백준][비트마스킹] 17471 게리맨더링 c++구현 목차https://www.acmicpc.net/problem/17471문제 코드 구현 방향비트 마스킹을 통해 나누어지는 경우를 모두 구하고 조건을 만족하는지 체크하여 최솟값을 갱신하였다.(영역을 색칠한는 방식으로 하면 코드를 더 간결하게 작성할 수 있었을 것 같다...) 코드 구현#include#include#include#include#include#includeusing namespace std;int N;vector person;vector adj[11];int visit[20] = { 0 };int Gap = 999;vector a;vectorb;//안에 있는지 체크 함수int incheck(int n, vector& c) { for (int i = 0; i q; q.push(start); vi.. 2024. 7. 12.
[비트마스킹][브루트 포스] 19942 다이어트 c++구현 목차https://www.acmicpc.net/problem/19942 문제   참고https://be-senior-developer.tistory.com/134 [비트 마스킹][c++] 개념과 활용 방법에 대해서 알아보자목차 비트연산자의 기본 사용&비트단위로 AND 연산을 한다.|비트단위로 OR 연산을 한다.^비트단위로 XOR 연산을 한다.~피연산자의 모든 비트를 반전시킨다.피연산자의 비트 열을 왼쪽으로 이동시be-senior-developer.tistory.com 문제 구현 방향N의 범위가 31이하이고 모든 조합을 구해보는 것이므로 비트마스킹을 적용해볼 수 있다.모든 조합을 만들어서 하는 것은 비효율적이기 때문에 비트마스킹을 이용했다. 코드 구현#include#include#include#includ.. 2024. 7. 9.
[비트 마스킹][c++] 개념과 활용 방법에 대해서 알아보자 목차 비트연산자의 기본 사용&비트단위로 AND 연산을 한다.|비트단위로 OR 연산을 한다.^비트단위로 XOR 연산을 한다.~피연산자의 모든 비트를 반전시킨다.피연산자의 비트 열을 왼쪽으로 이동시킨다.>>피연산자의 비트 열을 오른쪽으로 이동시킨다.  비트연산자의 활용 방법idx번째 비트끄기S &= ~(1 idx번째 비트 XOR 연산S ^= (1 최하위 켜져있는 비트 찾기idx = (S & -S)크기가 n인 집합의 모든 비트를 켜기(1idx번째 비트를 켜기S |= (1 idx번째 비트가 켜져 있는지 확인하기if(S & (1   idx번째 비트끄기#include#includeusing namespace std;//idx번째 비트끄기int main() { int S = 18; //10010 .. 2024. 7. 9.
728x90