일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- suffix array
- 세그먼트트리
- 전월세
- 아호코라식
- SCC
- 좌표압축
- 트리dp
- 트라이
- lcp
- 구현
- spfa
- 이분매칭
- 임대차계약
- 디닉
- 유량
- 투룸
- TRIE
- dinic
- Seg
- 접미사배열
- 이분탐색
- 오블완
- Segment tree
- 2SAT
- treedp
- MCMF
- LCA
- 월세
- 2-sat
- 티스토리챌린지
- Today
- Total
목록분류 전체보기 (63)
N coding
ucpc c번 구현이 극혐이긴한데 또 생각보다 별거 없기도 하다. 내가 https://www.acmicpc.net/problem/13016 문제를 푼거랑 비슷한 방식의 트리dp를 사용하면 된다. ucpc 당시에는 원래 그래프에서 트리의 지름을 하나 구하고 트리의 지름에 속하지 않는 노드를 가지고 다시 sub지름을 구해서 잘 연결해준다. 로 접근했었는데 이러면 트리에 같은 크기를 갖는 지름이 여러개 있을 경우 어떤 지름을 원래 지름으로 선택하느냐에 따라서 최대값이 이상하게 나올 수 있다. 그래서 정해는 모든 간선을 잘라본다. 이다. 근데 모든 간선을 자를때마다 subtree의 지름과 그 subtree를 제외한 나머지 트리의 지름을 구해서 연결하면 O(n^2)이 된다. 본선당시에 다들 n^2까진 생각했을 것..
타워 디펜스를 풀고나서 이 문제를 풀면 비슷하게 보인다. black인 노드를 기준으로 세로방향(위 t, 아래 f) 가로방향 (왼 t, 아래 f)의 두가지 상태를 가진다. black인 노드의 사방을 보면서 만약 위나 아래중에 하나만 존재한다면 얘는 반드시 그 하나랑 연결되야 하므로 논리식을 세워준다. (black i의 위 or black i의 위) 역시 가로방향도 마찬가지로 해준다. 만약 black i가 위에 잇는 w랑 연결이 된다면 그 w랑 연결될 수 잇는 가능성이 있는 다른 아이들은 다 연결불가이다. 그런 의미에서 w를 타고 들어가서 (black i의 아래 or black j의 ~방향)의 논리식을 세워줬다. 12345678910111213141516171819202122232425262728293031..
https://www.acmicpc.net/problem/3789 suffix array nlog n으로 짠 코드plzrun님 블로그에서 많이 참고하고 마리오블로그에서 lcp부분만 참고했다. 어떤 password가 주어졌을때그걸 왼쪽으로 1번씩 민 각각의 문자열 중에 가장 사전순으로 작은 아이의 시작 인덱스를 출력하면 된다. alabla 를 한번씩 민다면lablaaablaalblaala ... 이런식으로 총 n개가 나올 것이다이것들을 사전 순으로 정렬했을때 가장 위에 오는 문자열의 맨 처음 문자가 원래 문자열의 몇번째 애인지 출력하는 거임. 결국에는 환형이 되므로 나는 입력받은 문자열을 붙여서 2배로 늘리고가장 먼저 나오는 n보다 작은 인덱스를 출력하는데,문자열이 사전 순으로 같은 경우 인덱스가 작은 걸..