-
#800 div2 6/30 virtual대회/코드포스 2022. 7. 1. 00:11
https://codeforces.com/contest/1694
A만 풀고 나머지 업솔빙 왜 그런지 엄청 어려웠는데 업솔빙할때는 바로바로 생각남
A
1은 +1 0은 -1
모든 prefix sum의 합의 절대값이 최소가 되도록 -> 번갈아가면서 나오도록 한다.
B
10 은 0이되고
01은 1이된다.
string이 주어지고 sub string의 길이를 1로 만드는 모든 경우의 수
operation을 왼쪽꺼 삭제로 생각해보자
*****01 꼴이면 무조건 1의 index만큼 가능
******10 꼴이면 무조건 0의 index만큼 가능
왜냐면 ******0은 *****10 또는 *****00 인데
001은 01로
101도 01로 가능
C
오른쪽으로 가면 +1 왼쪽으로 가면 -1
각 값이 의미하는 내용은 = 오른쪽 이동 횟수 - 왼쪽 이동 횟수
맨 끝에서 오른쪽으로 갈 수는 없으니 그걸 기저로 잡고 시작
이게 맨 뒤부터 차례대로 말이 되는지 확인한다.
D
트리가 주어지고, 각 vertex마다 주어진 범위의 값을 가져야 한다.
모든 vertex는 0부터 시작
루트부터 어떤 노드까지 이동할 때 이동 순서에 맞춰서 비내림차순으로 임의의 값들을 생성해서 더할 수 있다.
a
b c d
꼴의 트리가 존재할 때 a은 b, c, d 의 합을 넘을 수 없다
a1+a2+a3 <= b+c+d
a1<=b, a2 <= c, a3 <= d이므로
이걸 이용하면 dfs 돌려서 a의 최솟값이 b+c+d보다 작거나 같은지
다시 말해 b+c+d로 a를 채울 수 있는지 계산한다.
못 채우면 +1 max(a)로 넘기고, 채울 수 있으면 min(b+c+d, max(a))로 넘겨줌
'대회 > 코드포스' 카테고리의 다른 글
852 div2 virtual (0) 2023.02.13 edu 130, 804, 803 virtual (0) 2022.07.08 #796 div2 6/28 virtual (0) 2022.06.30 #798 div2 6/27 virtual (0) 2022.06.27 #737 div2 8/9 (0) 2021.08.10