대회 결과

신촌지역 대학생(5개 대학..?) 프로그래밍 대회 동아리 연합 여름대회 Open이다. 본대회는 팀짜서 하는 대회인 것 같다. 이 대회 하면서 배운게 많아서 정리해야겠다 싶었다. (사실 플레 3개 푼거 박제하고 싶었다) 문제 세트는 https://www.acmicpc.net/category/detail/3855 에서 확인할 수 있다.
L. (AC/+13min) - priority_queue
우선순위 큐 11개 만들어서 잘 push, pop해주면 된다. 시간복잡도는
G. (AC/+19min) - greedy, sorting
5개의 level마다 무조건 시간이 작은 것부터 풀어주면 가장 빠르게 푼다는 사실을 알 수 있다.
K. (AC/+44min) - geometry, math, number_theory
직사각형을 통과하는 직선이 넓이를 반으로 나누기 위해서는 직사각형의 중심을 통과해야 한다. 변이 축에 평행하지 않을 수 있기 때문에, 중심은 다음과 같이 구했다.
- 직사각형을 이루는 4개의 점을 x,y좌표 기준으로 정렬했을 때 1, 4번째 점을 잇는 선분은 항상 대각선이다. 즉, 직사각형의 중심 좌표는 이 선분의 중심이다.
두 직사각형의 중심점을
I. (AC+1/+122min) - combination, inclusion_exclusion, fermat_little_theorem
시간제한이 0.5초라 고전했던 문제...
먼저,
* 페르마의 소정리란?
보통 자주 나오는
그렇게 전처리를 했다면,
* 포함-배제의 원리란?

가 성립한다.
여기서 좌변은 폭탄을 하나 이상 밟는 경우의 수이고, 우변의 경우의 수를 모두 구해주면 정답을 구할 수 있다. 즉,
* 시간복잡도의 늪으로...
최적화 방안 1.
최적화 방안 2. 실제로 쓰는
H. (AC/+142min) - prefix_sum
탭의 전체 길이를
답은
D. (AC/+209min) - dynamic_programming
2차원 격자에서 위로 갈 수 없다는 점이 힌트이다. 아래로 항상
다음은
정답은
J. (AC/+239min) - greedy, sorting, number_theory
동작 2는 필요없음을 알 수 있다. 또, 동작 1을 통해 될 때까지 소인수분해하는 것이 무조건 유리함을 알 수 있다. 그렇게 소인수분해 한 후 https://www.acmicpc.net/problem/16496(큰 수 만들기) 아이디어를 활용해 정렬해준다. 다만 C++에서는 수가 ull 범위도 벗어나므로, string으로 저장해 큰 수 덧셈을 구현해야 한다.
성현이가 만들 수 있는 수는 그렇게
E, F (Upsolving 예정)
'CF&AC&Open' 카테고리의 다른 글
[Educational Codeforces #107] A~D번 풀이 (0) | 2022.06.23 |
---|---|
[Codeforces Round #714] A, B, C번 풀이 (0) | 2022.06.20 |