본문 바로가기

C++

(226)
[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
[BOJ] 1021번 회전하는 큐 (C++) https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net #include #include using namespace std; int main(){ int n, m, num, index, count = 0; deque d; cin >> n >> m; for (int i = 1; i > num; for (int i = 0; i < d.size(); ++i) { if (d[i] == num) { index = i; break; } } if (index ..
[BOJ] 1261번 알고스팟 (C++) https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net #include #include #define INF 987654321 using namespace std; int M, N; int dy[4] = { 1, -1, 0, 0 }; int dx[4] = { 0, 0, 1, -1 }; int arr[101][101]; int dist[101][101]; void dijkstra() { queue pq; pq.push({ 0, 0 ..
[BOJ] 1504번 특정한 최단 경로 (C++) https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net #include #include #include #include #define MAX 801 #define INF 987654321 using namespace std; vector v[MAX]; int d[MAX]; int n, e; int v1, v2; void dijkstra(int start){ for(int i = 0; i start_to_ne..
[BOJ] 14267번 회사 문화 1 (C++) https://www.acmicpc.net/problem/14267 14267번: 회사 문화 1 영선회사에는 매우 좋은 문화가 있는데, 바로 상사가 직속 부하를 칭찬하면 그 부하가 부하의 직속 부하를 연쇄적으로 칭찬하는 내리 칭찬이 있다. 즉, 상사가 한 직속 부하를 칭찬하면 그 부하 www.acmicpc.net #include #include #define MAX 100001 using namespace std; int n, m; vector v[MAX]; int cpm[MAX]; void dfs(int num){ for(int i = 0; i < v[num].size(); i++){ cpm[v[num][i]] += cpm[num]; dfs(v[num][i]); } } int main() { ios::..
[BOJ] 13549번 숨바꼭질 3 (C++) https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include #include using namespace std; int n, k; bool visited[100001]; int bfs(){ priority_queue q; visited[n] = true; q.push({0, n}); while(!q.empty()){ int t = q.top().first; int c = q.top().second; q.p..