본문 바로가기

분류 전체보기495

[BOJ]1780번: 종이의 개수 (c++) https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 분할 정복 #include #include using namespace std; vector nums; struct pos { int x, y; }; // strt부터 가로세로 len의 영역의 숫자가 모두 같은지 확인 bool same_num_area(vector &paper, pos &strt, int len) { int num = paper[strt.x][strt.y]; for (i.. 2020. 7. 8.
[BOJ]2110번: 공유기 설치 (c++) https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (1 ≤ xi ≤ 1,000,000,000)가 � www.acmicpc.net #include #include #include using namespace std; // 라우터를 거리가 서로 min_gap 이상으로 설치할 때의 개수 구하기 int count_routers(vector &houses, int min_gap) { int last = houses[0]; int cnt = 1; for (int i = 1; i .. 2020. 7. 8.
[BOJ]2805번: 나무 자르기 (c++) https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, www.acmicpc.net 이분 탐색 #include #include #include using namespace std; // limit높으로 자르고 남은 길이 합 구하기 long long get_cut_off_sum(vector &trees, long long limit) { long long left = 0; for (int tree : trees) { if (tree - limit > 0) { left += tree .. 2020. 7. 8.
[BOJ]1654번: 랜선 자르기 (c++) https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 이분탐색 #include #include #include using namespace std; int count_possible_line(vector &lines, long long len) { int cnt = 0; for (int i = 0; i < lines.size(); ++i) { cnt += lines[i] / len; } return cnt; } int m.. 2020. 7. 8.