정수론 문제다.
본대회때는 못풀었는데 똑같은 풀이를 "잘"구현하면 되는데 구현을 못해서 틀렸다.

라고 하자.
고른 개의 sequence ~ 의 합을 적절히 0으로 만들수 있다는 것은,
가 를 나눈다는 것과 정확히 동치이다.
(옮긴 수를 옮기면 되므로)
그래서 우리는, gcd를 구해서 합을 나눌 수 있는지를 살펴보는 문제로 바뀌는데, 홀수가 있는 경우에는 항상 가능하다. 따라서 모든 수가 짝수인 부분 수열 중에 가 합을 나누는지를 살펴보자.
그런데 (mod n) 이다. (n은 짝수이므로)
이거 진짜 멋진 성질인거 같다. 웰노운인가?
따라서 로 나눌 수 있을때까지 를 최대한 키우고, 작은거부터 배열을 처리하면 에 해결가능하다.
근데 이거 구현이 약간 헷갈리는데 dp처럼 하면된다.
글을 더 자세히 쓰고 싶은데 다음에 시간되면 보안하겠다.
'알고리즘 공부 > codeforces' 카테고리의 다른 글
Codeforces Round #717 (Div. 2) C. Baby Ehab Partitions Again (0) | 2022.03.04 |
---|---|
Codeforces Round #717 (Div. 2) D. cut (0) | 2021.12.09 |
자랑 (5) | 2021.10.11 |
#726 F. Figure Fixing (0) | 2021.07.21 |
#557 Virtual contest (0) | 2021.02.05 |