본문 바로가기

공식

(6)
char >> int형으로 만들어 주기 위해 - '0' 을 한다 char >> int 로 할 때 -'0' 해준다. 그럼 int 형이 된다. ex) char'3'(51) - char'0'(48) = int '3'
최단거리 알고리즘(다익스트라, 벨만포드, 플로이드워셜) 다익스트라 알고리즘(Dijkstra Algorithm) : 한점 - 다수의점 (음수가중치X) [예제] www.acmicpc.net/problem/1753 벨만-포드 알고리즘(Bellman-Ford Algorithm) : 한점 - 다수의점 (음수사이클X) bluemoon-1st.tistory.com/17 [예제] www.acmicpc.net/problem/11657 플로이드-워셜 알고리즘(Floyd-Warshall Algorithm) : 모든점 - 모든점 [예제] www.acmicpc.net/problem/11404 [전체 비교] koosaga.com/2] Floyd-Warshall. Bellman-Ford. Dijkstra 알고리즘 뭐... 세 알고리즘 모두 최단 경로를 찾는 데 사용되는 알고리즘입니다...
https://www.acmicpc.net/problem/9471 피보나치수열을 m으로 나눈 나머지에서 0과 1이 연속으로 나온다면 주기가 나온 것. #include using namespace std; int main() { int tc, n, m; cin >> tc; while (tc--) { cin >> n >> m; int a = 0; int b = 1; int cnt = 0; while (1) { if (a == 0 && b == 1 && cnt != 0) { break; } int tmp = a; a = b; b = (tmp + a) % m; cnt++; } cout
행렬 제곱 '분할정복'을 이용하여 n 이 홀수면, A^n = A * A^(n-1) n 이 짝수면, A^n = A^(n/2) * A^(n/2)
LIS(최장 증가 부분 수열) int LIS() { v.push_back(-1000000001); for (int i = 0; i v.back()) { v.push_back(arr[i]); cnt++; } else { deque ::iterator itr = lower_bound(v.begin(), v.end(), arr[i]); *itr = arr[i]; } } return cnt; } *주의 : 배열의 순서는 고려하지 않음
손익분기점 공식 손익분기점 = 고정비용 / (물품가격 - 가변비용) + 1 res = a / (c - b) + 1; ex) 고정비용 1000, 가변비용 70, 물품가격 170 인 경우 손익분기점 = 1000 / (170 - 70) + 1 = 11이 된다.