본문 바로가기

알고리즘225

BOJ 2472 - 체인점 (다익스트라, 좌표압축, 세그트리, 수학) https://www.acmicpc.net/problem/2472 이런 문제 3문제를 3시간안에 중학생이 푼다 최대 n개의 정점으로 이뤄진 무방향 가중치 그래프가 주어진다. (n> u >> v >> w; g[u].push_back({ v,w }); g[v].push_back({ u,w }); } memset(d, 0x3f, sizeof(d)); for (int i = 0; i query; while (query--) { int i; cin >> i; cout 2020. 4. 22.
BOJ 2336 - 굉장한 학생 (세그트리, 수학, 기하) https://www.acmicpc.net/problem/2336 바로 이전에 풀었던 유형과 유사 n명의 학생이 동점자 없는 시험을 세번 치른다. i번 학생의 1,2,3차 시험 등수 < j번 학생의 1,2,3차 시험 등수일 경우 i번 학생은 j번학생보다 대단하다. 본인보다 대단한 학생이 없는 경우 그 학생은 굉장한 학생이라고 할 때, 굉장한 학생의 수를 구하라 (입력에서 1번 인덱스에 오는 숫자 i는 i번 학생이 1등했다는 의미) 각 학생마다 1,2,3차 등수를 tuple ran[MAX]에 저장한다. ex) ran[3] = {x,y,z} : 3번학생이 1차시험 x등 2차시험 y등 3차시험 z등했음. 1차시험의 등수를 기준으로 ran을 정렬한 후에, y와 z만 가지고 비교해 주면 된다. 아래 그림을 구현하.. 2020. 4. 22.
2019-2020 ICPC, Asia Jakarta Regional - H. Twin Buildings(수학, 기하) https://codeforces.com/problemset/problem/1252/H 바로 전에 포스팅한 문제의 풀이와 유사 L*W로 표현되는 영역들이 주어진다. (L,W n; for (int i = 0; i > l >> w; if (l > w) swap(l, w); a[i] = { l,w }; temp = max(temp, l * w); temp = max(temp, l * w); } sort(a, a + n); for (int i = n - 1; i >= 0; i--) sf[i] = max(sf[i + 1], a[i].second); for (int i = 0; i < n; i++) { ll l, w; tie(l, w) = a[i]; ans = max(.. 2020. 4. 20.
BOJ 18879 - The moo particle (기하, 수학) https://www.acmicpc.net/problem/18879 좌표평면 없이 푸는 머리좋은 사람들도 있을 것 같음 n개의 요소가 주어진다. 각각의 요소는 x,y값으로 표현된다. (n x[i] >> y[i]; id[i] = i; } sort(id, id + n, [](int i1, int i2) { if (x[i1] == x[i2]) return y[i1] > y[i2]; else return x[i1] = 0; i--) { cy = y[id[i]]; mxy[i] = max(mxy[i + 1], cy); } mnx[n - 1] = x[id[n - 1]]; for (int i = n - .. 2020. 4. 17.