플랫이랑 코포가 언레되는걸 보고 1시간 반짜리 플레 3문제를 돌기로 했다. A - 티켓 (?, ?분) 너무 어려워서 못풀었다. B - 천상용섬 (gunwookim, 17분) dp점화식을 세웠다. dp[i][j] : i번째 물체를 높이 j로 잘랐을때 나올 수 있는 경우의 수 이제 최적화(?)를 진행해보자 최적화1 - O(NH^2) 모든 방법을 하나하나 해본다. 최적화2 - O(280NH) 1부터 100만까지의 수중에 약수의 최대 갯수는 280개 이므로, O(NH)번 만큼 돌면서 그 전의 높이의 약수만 보면 된다. 약수를 빠르게 구하는 방법은 sqrt(N)방법으로, 미리 전처리를 해둔다. 최적화3 - O(280^2N) 이번엔 O(NH)번 만큼 도는게 아니라 i번째 물체의 높이도 약수만 보면 된다는 것을 알 ..
이번엔 엡실론, 플랫과 셋이서 BAPC 2016 을 쳤다. [플랫 블로그] L - Sticky Situation (gunwookim, 3분) 두번 뇌절을 했다. (흙흙) 정렬 후 인접한 3개에 대해 삼각형이 만들어지는지 판별한다. #include #pragma gcc optimize("O3") #pragma gcc optimize("Ofast") #define x first #define y second using namespace std; typedef long long ll; typedef pair pi; int n; ll a[20005]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 1;i > a[i..
놀고만 있던 저에게 urd05가 셋을 돌자고 제안을 했다. 그 셋은 바로 BAPC 2017 같이 푸는거라 그나마 재미가 더 있었다! 5시간동안 했는데, 너무 힘들었다. (오랜만에 몇시간 연속으로 코딩..) 간략하게 내가 아는 풀이를 적어보겠다! B - Amsterdam Distance 15003번: Amsterdam Distance Your friend from Manhattan is visiting you in Amsterdam. Because she can only stay for a short while, she wants to see as many tourist attractions in Amsterdam in as little time as possible. To do that, she need..
오랜만에 앳코더를 봤다. 그럭저럭 본것 같다. (안친 사이에 실력이 꽤 늘었다) 간략하게 풀이 설명을 한다! A 번 문제 A~B 사이에 K의 배수가 있는지 없는지 판별하는 문제다. B/K - (A-1)/K 가 0인지 아닌지 판별하면 된다. #include using namespace std; int n; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; int a,b; cin >> a >> b; cout > x; while(g m >> Q; for(int i = 1;i > q[i].a >> q[i].b >> q[i].c >> q[i].d; } a[0] = 1; dfs(1..
세 용액은 여러가지 풀이가 있습니다 1. 트리를 이용한 풀이 2. 이분탐색을 이용한 풀이 3. 양방향 탐색을 이용한 풀이 이 블로그에서는 양방향 탐색을 이용한 풀이 입니다. \(N\) 번을 돌면서 하나를 고정시키고 나머지 두개를 양방향 탐색으로 찾는 풀이입니다. 시간복잡도는 \(O(n^{2})\) 입니다. #include using namespace std; /// 풀이 : 하나를 고정시키고 나머지 두개를 양방향 탐색으로 찾을거에요! int n; long long a[5005]; int main() { cin >> n; for(int i = 1;i > a[i]; } sort(a+1,a+n+1); /// 정렬을 해야 가능해요! int idx1 = n-2,idx2 = n-1,idx3 = n; /// 여기에 ..
Mo's algorithm 을 사용하는 문제다. 와아아아아아아앙 짝짝짝짝 각 숫자마다 list로 관리하면서 (dq[i].front-dq[i].back) 의 값이 숫자 i 의 최대 길이이다. 이제 이 숫자 i의 최대길이를 O(k) 가 아닌 O(sqrt(K)) 에 구해아 한다. 이 방법은 최대길이를 관리하는 버킷을 만들어서 sqrt(K) 개로 쪼갠다음 각 구간을 관리한다. 이러면 제일긴 길이 를 찾는방법을 O(sqrt(K)) 만에 구할 수 있다. 자세한건 코드를 보자. #include using namespace std; list dq[300005]; int n,k,Q,val,sz; int ans[300005],a[300005]; int b[300005],cnt[5000005]; struct Query { ..
\(DP[N] : N\)번째 징검다리를 건널때 나올 수 있는 경우의 수 라고 잡아보면 \(DP[N] = DP[N-1]+DP[N-2]+...+DP[1]\) 이라는 식이 나오는데 \(DP[N-1] = DP[N-2]+DP[N-3]+...+DP[1]\) \(DP[N-2] = DP[N-3]+DP[N-4]+...+DP[1]\) . . . \(DP[1] = 1\) 이제 \(DP[1]\) 부터 \(DP[n-1]\)을 \(DP[n]\) 의 식에 대입해 보면 \(DP[N] = 2^{1}(DP[N-2]+DP[N-3]+...+DP[1])=\) \(2^{2}(DP[N-3]+DP[N-4]+...+DP[1])\) \(= 2^{3}(DP[N-4]+DP[N-5]+...+DP[1])... =2^{N-2}DP[1]\) 가 나옵니다. DP..
알고리즘은 그리디 입니다. 일단 제일 가격이 낮은 숫자들로 최대한 채웁니다. 이때, 0 이 제일 싼 가격이면 그 다음으로 싼 가격의 숫자를 맨 앞에 놓고 그 뒤에 0을 쭉 붙입니다. 그러면 쓰고 남는 돈이 있는데 이 돈으로 최대한 큰 수로 바꿉니다. 각 숫자에 대해 몇개씩 살 수 있는지 나오는데 이 숫자들을 내림차순으로 나열하면 제일 큰 숫자를 만들 수 있습니다. 제가 쫌 코드를 드럽게 짜기 때문에 풀이 이해용으로만 보시기 바랍니다. #include using namespace std; typedef long long ll; int n,pl,End; ll k,x,co[15],ch[15],tmp[15]; struct Money { ll cost; int num; }a[15]; bool cmp(Money p..
오프라인 다이나믹 커넥티비티 알고리즘을 알아보자. Offline Dynamic Connectivity 는 간선 추가, 삭제를 오프라인으로 처리하는 문제에 쓰인다. 대표적으로 BOJ의 16911 = 16912 = 15316 r) return; if(rl 1; add(node*2,l,mid,rl,rr,x), add(node*2+1,mid+1,r,rl,rr,x); } void Rollback(int cntt) { for(int i = 1;i > n >> Q; for(int i = 1;i op >> x >> y; if(x > y) swap(x,y); if(op == 1) vis[i] = 1,LifeTime[{x,y}] = i,QueryIn[i] = {x,y}; else if(op == 2) vis[LifeTim..
2차원 배열이 있다고 생각해보면 위에서 아래로 누적합을 한번 하고 왼쪽에서 오른쪽으로 누적합을 한번한다면, 누적합 배열이 만들어 진다. 이제 그러면 포함-배제의 원리를 이용하여 누적합 배열을 채우면 O(2048N) 으로 시간초과가 나지만 이제 11차원으로 늘려보면 11번의 뱡향으로 밀면 된다는 것을 알 수 있다. 그래서 저 방법을 사용하면 O(11N) 으로 11차원 누적합 배열을 전처리 할 수 있다. Do : 지금 쿼리가 a[ret[0][0]~ret[0][1]][ret[1][0]~ret[1][1]] ... [ret[10][0]~ret[10][1]] 일때 값 구하기, 포함-배제의 원리를 사용하는 2차작업 f : 포함-배제의 원리를 사용하는 1차작업 쿼리를 처리할때는 포함-배제의 원리를 사용해도 시간이 충분..
- Total
- Today
- Yesterday
- 오일러 경로
- Constructive
- ABC
- Rabin-Karp
- 비요뜨 존맛
- AtCoder
- 1909
- 알고리즘 문제 풀이
- combination
- PS
- 비요뜨
- 누적 합
- gunwookim
- 간단한 풀이
- 쿼리
- DP
- 정렬
- Offline Dynamic Connectivity
- 세그먼트 트리
- 수열과 쿼리
- 하이퍼
- 스택
- 냄새 싫어
- 김춘배
- 앳코더
- hyper
- BOJ
- codeforces
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |