vidigummy KAU 84

BOJ 11279/1927 최대힙/최소힙

www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 하나를 풀면 다른 하나도 풀 수 있는 1+1 떨이 행사 같은 문제이다. 왜냐..

BOJ 1202 보석도둑

www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 재밌었다. 어차피 각 가방에 하나씩밖에 안 들어간다는 뜻이니까, 들어갈 수 있는 보석의 가격을 최대힙(STL-priority_queue)으로 저장한 다음, 더 이상 안 들어가면 최대 가격을 ans에다 저장해주면 되는 문제였다. #include #include #include #include using namespace std; int main() { ..

BOJ 1780 종이의 개수

www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 또또또또또또또또또 그놈의 scanf printf 아니면 시간초과라니 진절머리가 난다. #pragma warning(disable: 4996) #include #include using namespace std; int check(vector paper, int size) { int standard= paper[0][0]; for (int i = 0; i < size; ++i) { for (int j ..

BOJ 16916 부분 문자열

www.acmicpc.net/problem/16916 와 이렇게 못된 문제는 처음이다. 내가 짠 코드가 시간초과가 계속 나길래 다른 사람 코드를 봤다. 그런데, 차이가 없는거다! 세상에! 그래서 하나하나 따져보기 시작했다. string의 size를 구하는 과정에서 났을까... 아니면 어디서 났을까... 하면서 매우 쫀쫀하게 짜보았다. cin.tie(0), cout.tie(0) 이런것도 썼다. 한번도 쓴 적이 없는데! 와! 뭐 어쨌든... 결론은 인덱스 0을 무시하면 시간초과가 나지 않았다는거다. 솔직히 좀 어이가 없긴 한데, 그렇다. ans[0]을 size 초기화해주면 시간 초과가 난다. 물론 그게 불필요한건 아는데(어차피 0일 테니까), 나를 화나게 한다. 만약 이 문제 풀거면 풀기 전에 화를 가라앉히..

BOJ 1992 쿼드트리

www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 색종이 문제랑 똑같은데 왜 랭크는 높은지 1도 이해할 수 없는 문제다. 똑같이 풀었다. 아니 사실 다른 점이 있긴 한데, 그냥... 내가 자른 것이 내 생각대로 잘리진 않아서 코드 한 60번째 줄 보면 2랑 3이랑 바뀌어있을거다. 그거다. 확인해보고 싶으면 출력하면 된다. #include #include using namespace std; int check(vector paper, int size..

BOJ 2630 색종이 만들기

www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 이런 문제다. 그렇다면, 분할정복 기법을 사용한다. 어차피 1*1 2*2 4*4 .... 이런 것들만 있으니까 안되면 자르고 되면 넣고 하면 된다. 단순한 문제, #include #include using namespace std; int cutting(vector &ans, vector paper, int size); int check(vector paper, int size); i..

알고리즘 과제 4

무향 그래프 G=(V, E)가 주어져 있고, 서로 다른 두 노드 a와 b에 각각 한 명씩 사람이 있다. 이 사람들은 공평한 위치인 노드 c에서 만나려고 한다. c의 조건은 다음과 같다: a에서 c까지 최단 경로 (G가 가중 그래프가 아님에 유의하시오)의 길이와 b에서 c까지 최단 경로의 길이의 차이가 가장 작은 노드이다. 다음 그래프를 보자. 노드 1부터 9까지 총 9개의 노드가 있고, 9개의 에지 (1, 2), (1, 3), (2, 4), (2, 6), (4, 5), (5, 7), (5, 8), (6, 8), (8, 9)가 있는 그래프에서, 각각 1번 노드와 9번 노드에 있는 두 사람이 서로 만나려면, 두 노드 모두에서 같은 거리 2인 1-2-6, 9-8-6 노드 6이 공평한 위치가 된다. (그래프를 ..