무게당 가격이 비싼 보석부터 꺼내서 쓰기: 이를 위해 우선순위 큐로 정렬남은 배낭무게가 0이 될때까지 아래 과정 반복남은 배낭무게가 우선순위 큐에서 꺼낸 보석의 무게보다 같거나 큰 경우: 남은 배낭무게 업데이트 및 현재 가격 업데이트남은 배낭무게가 우선순위 큐에서 꺼낸
n번만큼 p배 해주기. 단, k가 10의 8승, p가 10의 8승으로 수가 매우 크므로 long long 타입을 사용해주고, 매 연산마다 1000000007 로 모드 연산 해주기.
원본 구간에 대한 정보와 테스트 구간에 대한 정보를 투포인터를 사용하여 최고 초과 속도를 업데이트<투포인터 이동 조건>if 포인터1의 구간 길이 > 포인터2의 구간 길이: 포인터1의 구간 길이 -= 포인터 2의 구간 길이: 포인터 2 1증가if 포인터2의 구간 길
동적계획법 문제: di = i번째를 포함하는 최장 증가 부분 수열의 길이b 배열 활용: bi = 최장 증가 부분 수열의 길이가 i인 숫자이분탐색 활용: 1 ~ maxLength에 대하여 numi 가 들어갈 위치 탐색
dp 테이블 정의di.first = i번째 A작업대를 포함한 최소 조립시간di.second = i번째 B작업대를 포함한 최소 조립시간\+++초기조건d1.first = a1, d1.second = b1\+++점화식di.first = min(di - 1.first + ai