본문 바로가기

코드포스

[코드포스 Round 667] C. Yet Another Array Restoration 더보기
[코드포스 Round 667] B. Minimum Product 으음... 어엄... 으음... 곱셈의 값이 작아지려면 둘 중 하나의 숫자가 작아져야 한다고 생각했다. 그래서 한쪽에 몰아서 n을 빼는 걸 두 번 확인하고 그 중 작은 값을 선택하면 된다고 생각했는데 틀렸다ㅠㅠㅠㅠ 뭐가 문제야 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pai.. 더보기
[코드포스 Round 667] A. Yet Another Two Integers Problem 문제 이해 했고 문제 적힌 그대로 구현했다. a != b일동안 while 돌고 내부에서는 10부터 1까지 빼는데 이전 값이랑 다르거나 뺀 결과가 b보다 크거나 같을 때까지 뺐다. 그런데 결과가 조금 다르다...? 이 때 1차 디용했고 다음으로 이렇게 풀면 시간 복잡도 터지니깐 다른 방법 생각했다. 다음 방법.. 가장 최소로 만드려면 가장 큰 수를 빼야 하는데 가장 큰 수는 10 - 9 - 10 - 9로 이어진다. 그래서 19를 계속 빼면 되겠다 싶어서 먼저 19로 나누고 다음으로 나머지 수의 횟수를 더하면 되겠다 싶었다. 나머지 횟수는 위와 같다. ㅋㅋㅋ그런데 예시랑 답이 다르다.. 내 답이 더 작게 나옴... 19씩 나누면 되잖아... 뭐가 문제인지 모르겠음 tlqk.. may가 다른 거 써도 된다는 .. 더보기
[코드포스 Round 667] 후기 모닝 코포 치려다가 아주 매운맛을 보았다. 아니 매운맛 까지는 아닌데 문제 이해 못하겠는거 하나랑 문제 왜 틀렸지 싶은 거 하나 있어서 한 문제 맞고 끝났다. Standings ~ 00:20 A 문제 이해 후 어떻게 돌아갈지 생각해봤는데 예시가 생각한 것과 다르게 나와서 좀 당황... 그래서 패스했다. ~ 00:40 B 틀림 문제 이해도 했고 구현도 했는데 2번 테케에서 틀렸다. 다음 문제 보러 패스 ~ 01:37 C 통과 몰랐는데 시간 엄청 썼구나. 살짝 감은 오는데 어려워서 고민하다가 다시 A번 보고 B번 보고 안되겠다 싶어서 C라도 계속 잡았음. 다행히 통과했다. 0솔일까봐 걱정함 ~ 00:49 B 틀림 뭐가 문제인지 모르겠다ㅜ 로직에 예외 있을 것 같은데 잘 모르겠음. 그래도 가장 큰 값이랑 가장.. 더보기
[코드포스 Round 677] E. Two Round Dances 음.. 뭔가.. 수학... 모르겠... 해서 패스했던 문제 그래서 풀이 들으면서 풀었다. 아ㅋㅋㅋㅋ 그리고 two round dance 저 round가 둥글게란 뜻이였다. 나는 두 개로 나누니깐 그 경기할 때 라운드 그런거 생각했었음. 1라운드에 춤 추는 사람 2라운드에 춤 추는 사람. Round dance is a dance circle consisting of 1 or more people 여기서 확실히 얘기해주는데 넘겼구나 암튼 풀이는 이렇다 (k-1)! * (k-1) ! * C(n, k) / 2 (k = n / 2) 일단 그룹에 속하는 사람 뽑는 경우가 n명 중 n / 2명 뽑는 거니깐 C(n, n/2)이고 두 그룹의 순서는 상관 없어서 / 2한다 다음으로 원으로 도는 순서 구해야 하는데 이건 원.. 더보기
[코드포스 Round 677] D. Districts Connection 이것도 보면 모두 같은 숫자만 아니면 어떻게든 정답이 만들어진다. 그래서 먼저 전부 같은 경우 제외해주고.. 이제 전부 연결되게 만들어주는게 문제인데.. 오.. 이거 잘 보니 유파로 풀 수 있겠다 싶었다. 집합 하나를 만드는게 목표니깐 집합이 다르고 숫자가 다른 경우에 묶어주는거지. 다음으로 문제가 생겼는데 숫자 범위가 10^9이다. ㅋㅋㅋㅋ 유파 만들면 범위 터져버린다. 근데 보면 n은 5000밖에 안 된다. 그래서 좌표압축 하면 어떨까 싶었음. 그래서 좌표압축하고 유파써서 풀었다. 죄표압축 기억 안 나서 코드 복붙했는데 양심이 조금 찔리는군 #include #include #include #include #include #include #include #include #include #include .. 더보기
[코드포스 Round 677] C. Dominant Piranha 조금 생각해보니 전부 같지 않다면 반드시 대장 피라냐가 생긴다! 대장 피라냐는 가장 큰 사이즈일테니 처음에 가장 큰 피라냐를 찾았다. 하지만 틀림ㅎㅎ 알고보니 554일 경우 옆에 작은 값이 있는 가장 큰 값을 찾아야 한다. 그래야 먹고 커지지. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using .. 더보기
[코드포스 Round 677] B. Yet Another Bookshelf 최소 움직이는 횟수는 1과 1 사이에 0의 개수라서 1의 시작점 ~ 1의 끝 점 사이의 0의 개수를 세어줬다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; voidsolve() { int n; scanf("%d", &n); int s.. 더보기