https://www.acmicpc.net/problem/22348

 

22348번: 헬기 착륙장

각 테스트 케이스에 대해, 한 줄에 하나씩, 빨강 페인트 a통과 파랑 페인트 b통만을 이용해 만들 수 있는 서로 다른 헬기 착륙장의 수를 109 + 7로 나눈 나머지를 출력한다.

www.acmicpc.net

테스트 케이스가 1만개라고 주어졌기에, 전처리를 잘 해서 쿼리에서 소요되는 시간을 줄여야 한다. 

문제에서 관찰해야 하는 사실은 헬기 착륙장을 만들었을 때 빨강 페인트와 파랑 페인트의 통 수의 합이 447가지 경우밖에 없다는 것이다. 1, 1+2, 1+2+3,...1+2+...+447. 448까지의 합이 100128이므로 이 이후는 따질 필요가 없겠다. 

결국 각각 447가지 경우에 대해서 빨강 페인트의 통 수가 50000가지가 가능하므로 [447][50000]배열을 만들어 DP 해주면 각 경우의 수를 구할 수 있다. 쿼리에서는 447개 경우에 대해 가능한 빨강 페인트 통 개수의 값들을 다 더해 주면 되는데, 이건 구간 합이므로 Prefix sum으로 해결하면 447번의 연산으로 하나의 쿼리를 처리하므로 대충 O(N√N + Q√N)정도의 시간 복잡도로 해결했다고 보면 되겠다.

'알고리즘 > 백준' 카테고리의 다른 글

백준 3090 차이를 최소로  (0) 2023.01.05
백준 7469 K번째 수  (0) 2023.01.05
백준 15972 물탱크  (0) 2023.01.05
백준 1315 RPG  (0) 2023.01.05
백준 1178 간선 추가  (1) 2023.01.05

https://www.acmicpc.net/problem/1315

 

1315번: RPG

준규는 새 RPG 게임을 시작했다. 이 게임에서 캐릭터는 2가지 스탯을 가지고 있다. 하나는 힘(STR)이고, 다른 하나는 지력(INT)이다. 캐릭터를 생성했을 때, 두 스탯은 모두 1이다. 게임에는 총 N개의

www.acmicpc.net

STR, INT로 [1000][1000] DP를 하면 된다는 걸 쉽게 생각할 수 있다.각 지점에서 남는 포인트를 활용해서 각 지점에 가는게 가능한지 생각해 보자.

'알고리즘 > 백준' 카테고리의 다른 글

백준 3090 차이를 최소로  (0) 2023.01.05
백준 7469 K번째 수  (0) 2023.01.05
백준 15972 물탱크  (0) 2023.01.05
백준 22348 헬기 착륙장  (0) 2023.01.05
백준 1178 간선 추가  (1) 2023.01.05

https://www.acmicpc.net/problem/1178

 

1178번: 간선 추가

첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (2 ≤ V ≤ 1,000, 1 ≤ E ≤ V×(V-1)/2) 정점에는 1부터 V까지 번호가 매겨져 있다고 생각한다. 이어서 E개의 줄에 걸쳐 간선을 이루는 두 점 a와 b

www.acmicpc.net

답이 되는 그래프는 한붓그리기가 가능해야 한다. 문제에서 주어진 그래프가 하나의 컴포넌트라는 보장이 없으므로, 이 컴포넌트를 하나로 합치는 동시에 홀수점의 개수가 0이나 2인 한붓그리기의 조건을 만족해야 한다. 

 

풀이를 생각해 보면, 한붓그리기가 가능한 두 컴포넌트는 한 컴포넌트에서 한붓그리기의 끝 정점과 나머지 컴포넌트에서 한붓그리기의 시작 정점을 연결하는 간선을 추가하여 한붓그리기가 가능한 하나의 컴포넌트로 만들 수 있다. 

 

즉, Union-Find를 써서 컴포넌트를 나누고, 각 컴포넌트에서 홀수점의 개수가 0또는 2가 되도록 간선을 추가하고, (컴포넌트-1) 의 간선을 추가하면 된다. 

 

처음에는 이미 있는 간선을 내가 또 추가하면 안 된다고 생각했는데, 애초에 그렇게 하면 답이 없는 케이스가 있으니까 신경쓰지 말고 그냥 하면 된다.

'알고리즘 > 백준' 카테고리의 다른 글

백준 3090 차이를 최소로  (0) 2023.01.05
백준 7469 K번째 수  (0) 2023.01.05
백준 15972 물탱크  (0) 2023.01.05
백준 22348 헬기 착륙장  (0) 2023.01.05
백준 1315 RPG  (0) 2023.01.05

+ Recent posts