ps:problems:boj:31501
목차
DP (Small)
| ps | |
|---|---|
| 링크 | acmicpc.net/… |
| 출처 | BOJ |
| 문제 번호 | 31501 |
| 문제명 | DP (Small) |
| 레벨 | 골드 3 |
| 분류 |
LIS |
| 시간복잡도 | O(nlogn + q) |
| 인풋사이즈 | n<=3000, q<=3000 |
| 사용한 언어 | Python 3.13 |
| 제출기록 | 35500KB / 48ms |
| 최고기록 | 40ms |
| 해결날짜 | 2026/01/17 |
풀이
- DP (Large)의 쉬운 버전. 풀이는 링크 참고. 코드도 동일하다.
- 제한이 작아서, O(n^2)에 LIS를 구해도 풀리기는 하다.
코드
"""Solution code for "BOJ 31501. DP (Small)".
- Problem link: https://www.acmicpc.net/problem/31501
- Solution link: http://www.teferi.net/ps/problems/boj/31501
Tags: [lis]
"""
import sys
from teflib import seqtask
def main():
_N, Q = [int(x) for x in sys.stdin.readline().split()]
D = [int(x) for x in sys.stdin.readline().split()]
len_by_last = seqtask.longest_inc_subseq_length_by_last_elem(D)
len_by_first = seqtask.longest_inc_subseq_length_by_first_elem(D)
for _ in range(Q):
A = int(sys.stdin.readline()) - 1
print(len_by_last[A] + len_by_first[A] - 1)
if __name__ == '__main__':
main()
- Dependency
ps/problems/boj/31501.txt · 마지막으로 수정됨: 2026/01/17 16:00 저자 teferi

토론