일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- bitmask
- Cycle detecting
- Segment Tree
- Eulerian path
- POJ
- BOJ
- flows
- Sieve_of_Eratosthenes
- BFSDFS
- Shortest path
- hashing
- disjoint-set
- Euler circuit
- Algospot
- mathematics
- scc
- backtracking
- Greedy
- GCD
- dynamic programming
- Eulerian circuit
- CS Academy
- graph
- DynamicProgramming
- Dag
- BST
- Euler path
- graph modeling
- implementation
- Today
- Total
목록implementation (2)
그냥 하는 노트와 메모장
BOJ 3217 malloc [분류 : 구현 / 세그먼트 트리] 최대 변수의 개수는 1000개, 또 메모리 할당 범위는 100 second >= _sz) break; cur++, nxt++; } if (nxt == allocated.end()) continue; else addr[var] = allocated.insert(nxt, { cur->second, cur->second + _sz }); } else { var = string(cmd).substr(cmd[0] == 'p' ? 6 : 5, 4); auto it = addr.find(var); if (cmd[0] == 'p') printf("%d\n", it == addr.end() ? 0 : it->second->first); else { if (..
* BOJ 2888 상범 게임[분류 : 다이나믹 프로그래밍, 구현] [풀이] 구현이 꽤 까다로운 문제. 간단하게 일차원부터 시작해보자. 1. [일차원 - 같은 문자가 딱 두 개] 그 인덱스 차이가 점수가 된다. 2. [일차원 - 같은 문자가 세 개 이상] 점수를 계산할 때 중복해서 셈하면 안된다. 즉, 인덱스 i와 인덱스 j가 같은 문자라면 i에서 j까지의 거리 또는 j에서 i까지의 거리 둘 중 하나만 계산하면 된다. 따라서 편의상 인덱스가 증가하는 순으로 방문하며 이전에 나왔던 같은 문자가 어디에 있었는지를 저장하여 진행하면 된다. 문제는 얼마나 먼 지를 계산할 때 인덱스 자체를 저장하기엔 부담스럽다. 따라서 누적합과 그때까지의 개수를 셈하여 진행한다.(예시) SMMMSSM 에서 S 점수를 구하는 경우..