BOJ (179) 썸네일형 리스트형 [BOJ] 11437번 LCA (C++) https://www.acmicpc.net/problem/11437 11437번: LCA 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정 www.acmicpc.net #include #include #include using namespace std; int parent[50001]; int depth[50001]; bool visited[50001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector node[50001]; for(int i = 0; i < n.. [BOJ] 3584번 가장 가까운 공통 조상 (C++) https://www.acmicpc.net/problem/3584 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net #include using namespace std; int parent[10001]; bool visited[10001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int t; cin >> t; for(int j = 0; j > n; // 초기.. [BOJ] 1563번 개근상 (C++) https://www.acmicpc.net/problem/1563 1563번: 개근상 백준중학교에서는 학기가 끝날 무렵에 출결사항을 보고 개근상을 줄 것인지 말 것인지 결정한다. 이 학교는 이상해서 학생들이 학교를 너무 자주 빠지기 때문에, 개근상을 주는 조건이 조금 독 www.acmicpc.net #include #include using namespace std; const int divval = 1000000; int dp[1001][2][3]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; dp[1][0][0] = dp[1][1][0] = dp[1][0][1] = 1; for(int i = 2; i dp[n][0.. [BOJ] 5567번 결혼식 (C++) https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net #include #include #include #include using namespace std; int n, m; vector v[501]; bool visited[501]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; for(int i = 0; i < m; i++){ int a, b; cin .. [BOJ] 5502번 팰린드롬 (C++) https://www.acmicpc.net/problem/5502 5502번: 팰린드롬 팰린드롬이란 대칭 문자열이다. 즉, 왼쪽에서 오른쪽으로 읽었을때와 오른쪽에서 왼쪽으로 읽었을때 같다는 얘기다. 당신은 문자열이 주어졌을때, 최소 개수의 문자를 삽입하여 팰린드롬이 www.acmicpc.net #include #include #include using namespace std; int dp[5001][5001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; string s, r_s; cin >> s; r_s = s; reverse(r_s.begin(), r_s.end()); for(int i = 1; i [BOJ] 12015번 가장 긴 증가하는 부분 수열 2 (C++) https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net #include #include using namespace std; int n; int arr[1000001]; vector seq; void binary_search(int num){ int low = 0, high = seq.size() - 1, mid; int ret = 1000000007; while(low = num){ if(ret > mid) ret = mid; high = mid -.. [BOJ] 11054번 가장 긴 바이토닉 부분 수열 (C++) https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net #include #include #include using namespace std; int n; vector arr(1001, 0); vector dp(1001, 1); vector r_dp(1001, 1); int main() { cin >> n; for(int i = 0; i > arr[i]; } for(int y = 0; y < n; y++){ for(int x = 0; x < y.. [BOJ] 2156번 포도주 시식 (C++) https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net #include #include using namespace std; int arr[10010]; int dp[10010]; int n; int main() { cin >> n; for(int i = 1; i > arr[i]; } dp[1] = arr[1]; dp[2] = arr[1] + arr[2]; for(int i = 3; i 이전 1 2 3 4 5 6 7 ··· 23 다음