리뷰 A는 평소처럼 살짝 늦지만 틀리지 않고 풀었다. B에서 말렸다. 일단, DP가 정해일 리는 없는데 DP 밖에 생각이 안 났다. WA 1 한 번 받고서 시간 지체하다가 제출했다. 에듀라서 다행이다. C는 계산이랑 케이스 나누는게 너무 고단해서 '망했다...' 싶었는데, 다들 힘들어하더라. $ \max_{1\le i\le n}h_i+1$로 만드는 경우를 빼먹고 있다가 극적으로 떠올리며 AC... D는 B보다도 아이디어가 쉬웠다. 일단, 문제에서 주어진 연산을 무엇을 사용해서 풀 수 있는지를 알고 있기 때문이다. 하지만 나는 그런 문제를 푼 적이 없어서 검색을 해서 코드를 하나씩 맞춰나갔다. 7초 남짓 남았을 때 $a_1,\ldots, a_{k-1}$에만 적용하는 방법을 그리디로 진행한 방법이랑 동일하게..
타일 밟기 문제 링크 좋은 문제다. 요약하자면 배열에 존재하는 각 등차수열들의 원소의 합 중 최대를 구하는 것이다. $N\le 3000$이고 원소들은 $10^6$ 이하이다. 풀이 & 코드 Solution 1 더보기 DP + 이진탐색 #include using namespace std; using ll = long long; #define REP(i,a,b) for (auto i = (a); i sync_with_stdio(0); cin >> n; REP(i,1,n) cin >> a[i]; ll answer = 0; REP(i,1,n) REP(j,1,i-1) { dp[i][j] = a[i]+a[j]; int k = lower_bound(a+1,a+j,2*a[j]-a[i])-a; if (a[i]+a[k] !..
별건 아니고... CSA에서 OI 세트가 뭐가 있나 뒤져봤었는데, 이런 것들이 있었다. 루마니아 문제는 들어본 적이 없어서 솔직히 꺼려진다. IOI 2016 Training Round IOI 2016 Training Round #1 IOI 2016 Training Round #2 IOI 2016 Training Round #3 IOI 2016 Training Round #4 IOI 2016 Training Round #5 Romanian IOI 2017 Selection Romanian IOI 2017 Selection #1 Romanian IOI 2017 Selection #2 Romanian IOI 2017 Selection #3 Romanian IOI 2017 Selection #4 Romanian..
밥 먹기 문제 링크 7577번: 탐사의 마이너 버전이라고 할 수 있다. 필자는 '탐사'를 자력으로 못 풀었지만, 어쨌든 '탐사'에 사용되는 방법을 배워서 이 문제를 수월하게 풀 수 있었다. 어쩌면 '밥 먹기'를 푼 뒤 '탐사'를 시도하면 풀 수 있을 것 같기도 하다. 풀이 더보기 상당히 어려운 문제이고, 아이디어성 문제이다. 문제에서 요구하는 것을 간단하게 바꾸면 '연립 부등식의 해를 결정해라' 정도의 얘기가 된다. 완전한 결정을 의미하는 것은 아니지만 아무튼. 신기하게도 떨어지는 거리의 범위가 큰 것이 문제의 힌트가 된다. '탐사'의 경우는 범위가 적어서 오히려 접근이 어려웠다. 따라서 DP의 가능성은 적다. $1\cdots N$을 쭉 나열하고 범위를 표시하면서 파악하면 감을 잡기 쉽다. $D_1$을 ..
A. Luntik and Concerts B. Luntik and Subsequences C. Grandma Capa Knits a Scarf D. Vupsen, Pupsen and 0 E. Pchelyonok and Segments F1. Korney Korneevich and XOR (easy version) A. Luntik and Concerts 번역/요약: \(a\)개의 \(1\)분짜리 노래, \(b\)개의 \(2\)분짜리 노래, \(c\)개의 \(3\)분짜리 노래가 있다. 공연 두 번에 나눠서 모든 노래를 부를 것이다. 두 공연의 공연 시간 차이가 최소가 되게 하고 싶다. 시간 차이의 최솟값을 구하라. 풀이: \(2\mid a+b\) 라면 \(0\), \(2\nmid a+b\)라면 \(1\)이..
Macros 더보기 #include #define REP(i,a,b) for (auto i = (a); i sync_with_stdio(0); int t; cin >> t; while (t--) solution(); } A. Spy Detected! 구현 포인트 - 범위가 작으니 카운트 배열에 때려넣으면 구현이 편해진다! 그냥 뻔한 문젠데 짜증나게 구네요. 더보기 int n; cin >> n; vector cnt(101); REP(i,1,n) { int x; cin >> x; ++cnt[x].first; cnt[x].second = i; } REP(i,1,100) { if (cnt[i].first == 1) { cout n; string x[n]; bool chk = false; pair a, b; RE..
A. Gregor and Cryptography \(P\mod a=P\mod b\) \(2\le a> n; string x, y; cin >> x >> y; x = " "+x+" ", y = " "+y+" "; bool chk[n+2] = {0,}; int cnt = 0; REP(i,1,n) { if (y[i] == '1') { if (chk[i-1] == false && x[i-1] == '1') chk[i-1] = true, ++cnt; else if (x[i] == '0') chk[i] = true, ++cnt; else if (chk[i+1] == false && x[i+1] == '1') chk[i+1] = true, ++cnt; } } cout n; SegmentTree gcdtree(n-1,..
https://velog.io/@hgmhc/제-3회-류호석배-알고리즘-코딩-테스트 제 3회 류호석배 알고리즘 코딩 테스트 대회 링크 안타깝게도 C++이므로 python 유저분들은 풀이만 슬쩍 봐주시면 될 듯 합니다. 잡설 원래 1시간 48분 차에 4솔을 해서 "한 자리수 가즈아ㅏ" 이러고 있었는데요, 없었습니다. 변수명 m 겹쳐 velog.io 아 너무 좋은 글이네요...