KOI(6)
-
BOJ 22344 : 그래프 균형 맞추기
https://www.acmicpc.net/problem/22344 22344번: 그래프 균형 맞추기 N개의 정점과 M개의 간선으로 구성된 무방향 단순 연결 그래프가 있다. 그래프의 정점들에는 1 이상 N 이하의 서로 다른 자연수 번호가 붙어 있고, 간선들에는 1 이상 M 이하의 서로 다른 자연수 www.acmicpc.net 개인적으로 이번 KOI 고등 1번 난이도>>>>>>>이번 KOI 고등 2번 난이도라고 생각한다. 먼저 모든 정점의 가중치를 x+a나 -x+b로 표현 가능하다. 이를 통해 가중치의 합의 최소 = 절댓값 함수에서의 최솟값을 이용하면 된다. 이때 사이클이 있을때의 예외를 잘 처리해야 하는데, 사이클이 있을 때 어떤 임의의 두 인접한 정점에서 유일한 x값이 나오는 경우가 있다. 이를 주의하..
2021.08.01 -
BOJ 22348 : 헬기 착륙장
22348번: 헬기 착륙장 (acmicpc.net) 22348번: 헬기 착륙장 각 테스트 케이스에 대해, 한 줄에 하나씩, 빨강 페인트 a통과 파랑 페인트 b통만을 이용해 만들 수 있는 서로 다른 헬기 착륙장의 수를 109 + 7로 나눈 나머지를 출력한다. www.acmicpc.net dp[i][j] = i개의 동심원, j개의 빨간 페인트를 이용했을 때 만들 수 있는 동심원 갯수 라고 두면 점화식은 이렇다 dp[i][j] += dp[i-1][j-i] (헤당 동심원에 빨간색 원을 만들 때) dp[i][j] += dp[i-1][j] (헤당 동심원에 파란색 원을 만들 때) 이때 우리는 만들 수 있는 모든 헬기 착륙장의 갯수를 만들어야 하므로, i
2021.07.31 -
BOJ 2487 : 섞기 수열
BOJ 2487 : 섞기 수열 2487번: 섞기 수열 A1, A2, …, AN으로 표시된 N 개의 카드를 정해진 방법으로 섞고자 한다. 그 섞는 방법은 1에서 N까지의 숫자로 이루어진 수열로 표시된다. 이 수열을 섞기 수열이라 하자. 섞기는 현재 가지고 있는 www.acmicpc.net 간단한 문제이다. 우리는 이 섞기를 반복하다보면, 어떤 특정한 원소끼리 값이 순환된다는 걸 알 수 있다. 이를 이용하면 답이 LCM(순환하는 그룹들의 순환 주기)라는 걸 알 수 있다. Union-find를 통해 각 순환되는 그룹 원소 갯수(=그룹들의 순환 주기)를 구해주고, LCM을 적용하면 된다. 코드 djayy035/dj035_PS 코드저장소. Contribute to djayy035/dj035_PS developme..
2021.05.11 -
BOJ 14864 : 줄서기
BOJ 14864 : 줄서기 14864번: 줄서기 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 학생 수 N (1 ≤ N ≤ 100,000)과 순서쌍의 수 M (0 ≤ M ≤ 1,000,000)이 공백으로 분리되어 주어진다. 일렬로 서 있는 학생들을 순서대로 학생1, 학 www.acmicpc.net i번째 숫자카드보다 작은 숫자카드의 갯수를 c[i]라고 하자. 그렇다면 순서쌍 (x,y)에 따르면 x가 y보다 더 큰 숫자카드이므로 c[x]는 1 증가, c[y] = 1 감소한다. 이를 계속해주면 되고, 같은 수의 숫자카드는 없기 때문에 값이 같게 나올경우 안되는 경우이므로 -1을 출력하면 된다. 코드
2021.05.11 -
BOJ 15976 : XCorr
www.acmicpc.net/problem/15976 15976번: XCorr $ 1 \le N, M \le 3,000, 1 \le n \le 3,000, -3,000 \le a \le b \le 3,000$ 이다. www.acmicpc.net 처음에는 어려웠는데, 생각해보니 진짜 쉬운 문제였다. 그냥 x_i를 기준으로 해서 범위 안의 y_i를 모두 더한다. 이는 Prefix-Sum을 활용하고, a_i값에 알맞게 범위를 찾아주는 것은 이분 탐색을 활용하거나 표준 라이브러리를 이용한 lower_bound, upper_bound를 이용한다. #include #define MEM 300005 #define sanic ios_base::sync_with_stdio(0) using namespace std; ty..
2020.09.09 -
BOJ 17623 : 괄호
https://www.acmicpc.net/problem/17623 17623번: 괄호 6개의 문자 ‘(’, ‘)’, ‘{’, ‘}’, ‘[’, ‘]’ 로 이루어진 올바른 괄호 문자열 W에 대하여 정수의 ‘괄호값’을 지정하는 함수 val(W)가 정의되어 있다. 먼저 올바른 괄호 문자열부터 정의해 www.acmicpc.net 이 문제는 재귀적인 느낌(?)이 있기에 DP로 해결 가능하다. dp[i] = "N=i일때 dmap(X)의 최솟값" 이때 우리는 두 가지 경우를 생각할 수 있다. 첫번째 경우 : 이전 문자열에서 괄호를 감싸는 경우 i가 2,3,5의 배수일 때 처리해주면 된다. 두번째 경우 : 이전 문자열에 갖다 붙일 경우 min(dp[i]+dp[n-i]) & (1
2020.08.17