{ "CT" : { "prefix": "ct", "body": [ "#include", "using namespace std;", "", "int main(){", " ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);", " return 0;", "}" ], }, "CP": { "prefix": "cp", "body": [ "#include", "#include ", "#include ", "using namespace std;", "using namespace __gnu_pbds;", "template", ..

셋: https://codeforces.com/contest/2085A. Serval and String Theory$k=0$인 경우, $s$가 universal이기 위해서는 처음부터 original $s$가 한 종류의 문자로만 이루어져 있을 경우, 답은 항상 불가능이다.그 외의 경우 항상 $s$를 universal하게 만들 수 있다. 양 끝 문자가 다르다면 그 둘을 swap하면 되고, 양 끝 문자가 같으면 다른 곳에서 문자를 하나 가져와 양 끝 문자 중 적절한 것과 swap하면 되기 때문이다.int n, k;string str;cin>>n>>k>>str;string rev = str;reverse(all(rev));if(rev > str || str[0]!=str[n-1] && k>0){ cout..

시험도 끝났겠다 오랜만에 유사코 연습을 돌렸다.어려운 문제를 푸는 연습을 해야 할 것 같아서 셋은 골드 셋으로 골랐다. 내년에도 ICPC를 광탈하지 않기 위해서는 골~플랜디를 더 빡세게 할 필요가 있을 것 같다. 중간에 HLD 템플릿 만든 시간을 빼면 두 시간 정도 걸려서 풀었다. 확실히 유사코는 순수 애드혹/그리디의 비중은 낮고 여러 가지 자료구조와 알고리즘을 사용하는 문제가 많이 출제되는 것 같다. 18262: Milk Pumping (G1, dijkstra) 방향 그래프가 주어지고, 1번 정점에서 시작해 $n$번 정점에서 끝나는 경로 중 (경로의 유량) / (경로의 가중치 합)의 최댓값을 찾는 문제이다. 고정된 $k$에 대해 유량이 $k$ 이상이 되도록 최단 경로를 구성하려면 유량이 $k$ 이상인 ..

https://www.acmicpc.net/problem/3090 그리디 + 파라메트릭 서치를 사용하는 문제이다.문제를 풀고 블로그 풀이들을 보는데 내가 푼 방법이랑 많이 달랐고, 하나같이 이걸 어떻게 생각함(...) 식의 풀이여서 글을 쓰게 되었다.(시험 기간에 공부하기 싫어서 쓴 것도 있다.) 우선 보자마자 파라메트릭 서치를 쓰면 좋을 것 같다는 생각이 들었다.인접한 원소 간 차이의 최댓값을 한 번에 최소화하는 것보다, 인접한 원소 간 차이가 어떤 $d$ 이하가 되도록 연산을 수행할 수 있는지 판별하는 게 더 쉬워 보였기 때문이다. 여기서 한 가지 관찰을 할 수 있는데, 배열 $A$의 최소 원소를 $m$이라 두면, 연산을 최적으로 수행하고 얻은 결과 배열의 모든 원소는 $m$보다 크거나 같다.이는 ..

딱히 재미도 감동도 없는 셋이였다... 10021: Watering the Fields (G3, mst) MST 기본 문제이다. 필요한 간선만 만들어서 mst로 슥삭해주면 된다. 10022: The Lazy Cow (G4, 누적 합) 그나마 재밌었던 문제이다. 어떤 시작점으로부터 맨해튼 거리가 $K$ 이하인 점들의 값 합을 최대화하는 문제인데 제한이 작아서 브루트포스를 돌리면 된다. 맨해튼 거리의 contour는 다이아몬드 모양으로 구현이 불편하기 때문에, 45도 돌려서 체비쇼프 거리 꼴로 변환하여 2차원 정사각형 누적합의 최대를 구해주면 된다. 거리 변환 시 빈 공간이 생기는데, 시작점이 빈 공간이 되지 않도록 잘 확인해줘야 한다. 10023: Mooo Mooo (G4, DP) 문제를 잘 변형하면..

골드 셋도 맛보고 싶어서 도전해봤다. 옛날 대회라 그런가 든든국밥 문제들만 나와서 비교적으로 쉽게 풀 수 있었던 것 같다. 5922: Above the Median (P4, Segment Tree) 젠장 또 median이야!고정된 값 $X$에 대해 주어진 수열의 contiguous subsequence 중 median이 $X$ 이상인 것들의 개수를 구하는 문제이다. $X$보다 크거나 같은 $a_i$를 $1$로 치환하고 $X$보다 작은 $a_i$를 $-1$로 치환하면, 놀랍게도 합이 0 이상이 되는 연속 부분 배열의 개수를 구하는 문제가 된다! 연습 중에는 merge sort tree로 누적 합을 관리하는 방법을 사용했는데 $(N\log^{2}{N})$, 그냥 누적합 배열에서 inversion count..

[공지]https://www.acmicpc.net/group/21869USACO 셋을 밀려고 하는데, 혼자 하긴 적적해서 그룹을 만들었어요!매주 수/금/일 오후에 그룹 내 연습으로 silver~gold 수준의 셋 한 개를 돌아볼 예정입니다.(제 개인 사정으로 몇 번 건너뛸 수도..😢)열심히 하실 분 / 찍먹 하실 분 / 관전만 하실 분들 모두 환영입니다..! 오늘은 2018년 US Open (왜 거창하게 us-open이지..?) silver 셋을 돌렸다. 원래 9시 즈음에 시작하려 했으나 치킨이 일찍 오는 바람에 두 시간 늦춰서 문제를 풀었다 ㅎ시간 안에 올솔했고 재밌는 셋이였던 것 같다! 15760: Out of Sorts (G1, 정렬, 좌표 압축) 버블 정렬을 배열의 전체 범위에서 수행하는데..

https://www.acmicpc.net/group/21869요즘 그룹을 만들어서 시간을 재고 USACO 셋을 밀고 있다. (가입 신청 환영!!)첫 연습셋으로 2023 February Contest의 Silver 셋을 돌렸다. 아직 부족한 게 많은 것 같다. ㅠ 27846: Bakery (P4, 수학, 이분 탐색) 대충 이분 탐색을 돌리면 되겠다는 생각만 가지고 있었는데, 어떻게 이분 탐색을 돌릴 지 몰라 못 풀었다. 삼분 탐색, 2차원 이분 탐색(...) 등 여러 뻘짓을 했다. 쿠키와 머핀을 굽는 데 필요한 시간의 합을 기준으로 이분 탐색을 돌리면, 놀랍게도 부등식이 잘 풀려서 $O(n)$에 판별 가능한 꼴이 된다! 따라서 시간복잡도 $O(N\log{M})$에 문제를 풀 수 있다. ($M$: $t_..

시험 기간에 기분 전환할 겸 랜디를 돌렸습니다!코드포스 스타일의 문제를 조금 연습하고 싶어서 그리디, 수학, 애드 혹, 구성적, 조합론, 정수론 문제 중 S2 ~ G3인 문제들을 골라 풀었습니다.27467: 수학 퀴즈 (S1, 수학, 05:23)방정식 $x^3 = 1$의 허근 $\omega$의 성질을 잘 활용하면 되는 문제이다. 24956: 나는 정말 휘파람을 못 불어 (G4, 조합론, 10:27)H를 기준으로 앞에 있는 W의 개수와 뒤에 있는 E의 개수를 적절히 세어 주면 된다.H 앞에 W가 W[i]개만큼 있고, 뒤에 E가 E[i]개만큼 있으면, 만들 수 있는 유사 휘파람 문자열의 수는 $W[i] \cdot (2^{E[i]}-E[i]-1)$ 개이다.W[i]와 E[i]를 누적합 비슷한 dp로 처리해주고..

두달만에 다시 글을 쓰네요! 대학에 입학하고 나니 개인적인 공부를 할 시간이 많아져 확실히 좋은 것 같습니다 ㅎㅎ 고등학교 시절엔 "지금 공부 안 하면 큰일난다!!"는 마인드로 공부했었던 것 같은데, 지금은... 뭐 하면 좋고 안 해도 그만이고 ㅋㅋㅋㅋㅋㅋ 고등학교 친구들 공부하는거 보면 그동안 어떻게 버텨왔던건지 참 신기하네요 아무튼간에, 교내 알고리즘 동아리에서 매주 세미나를 진행하는데, 연습문제를 모두 풀면 동아리비를 환급해준다는 말을 듣고(!!) 이번 주차 연습문제를 한번 풀어보았습니다. 25545: MMST (G2, MST) 최소/최대 스패닝 트리가 아닌 아무 스패닝 트리만 구해 출력하는 문제이다. 주어진 그래프에 사이클이 존재한다면 ($V\leq E$) 서로 다른 스패닝 트리가 적어도 3개 존..
- Total
- Today
- Yesterday