일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 펜윅트리
- DP
- 이진탐색
- BFS
- MST
- 에라토스테네스의 체
- 위상정렬
- dfs
- lca
- 정렬
- 세그먼트트리
- DisjointSet
- 투포인터
- 이분매칭
- LazyPropagation
- 다익스트라
- 크루스칼
- lis
- 구현
- 플로이드와샬
- 비트마스크
- 백준
- 수학
- 좌표압축
- boj
- 그리디
- 삼분탐색
- 브루트포스
- 이분탐색
- 누적합
- Today
- Total
목록전체 글 (127)
lastknight00
문제 링크 : [백준]성대나라의 물탱크(18227) 문제 설명 N개의 노드로 이루어진 트리가 존재합니다. 특정 노드에 물을 공급하려 하는데, 물을 공급하려면 루트 노드부터 해당 노드까지 각 깊이에 해당하는 만큼의 물을 넣어야 합니다. 물을 넣으면서 중간중간 특정 노드에 물이 얼마나 공급되었는지를 확인하세요. 입력 N(노드의 수, 1 >a>>b; if(a&1)u(1,1,n,w[b]); else cout
문제 링크 : [백준]미로에 갇힌 건우(18224) 문제 설명 N * N 지도가 주어집니다. 0은 빈 칸, 1은 벽입니다. (1,1)에서 출발하여, (N,N)까지 이동하는데, 벽은 밤에만 넘어갈 수 있고, 진행 방향으로 이어진 벽을 한번에 넘어가야 합니다. 벽을 타고 나면서 지도를 벗어나는 경우는 이동할 수 없습니다. 밤/낮에 몇칸을 이동 할 수 있는지가 주어졌을 때, 목적지로 가장 빠르게 이동하였을 때, 몇번째 날의 낮/밤 여부를 구하세요. 입력 N(지도의 크기, 1 m;m--; for(i=0;id[i][j]; q.push(N(1,m,0,0,1)); v[0][0][1][m]=1; while(!q.empty()){ N c=q.front();q.pop(); if(c.x==n-1&&c.y==n-1){ cout
문제 링크 : [백준]무엇을 아느냐가 아니라 누구를 아느냐가 문제다(9694) 문제 설명 0번 노드에서 N-1번 노드까지의 최단거리를 가는 경로를 구하세요. 입력 T(테스트 케이스, 1 < T < 100) N(엣지의 갯수, N
문제 링크 : [백준]민준이와 마산 그리고 건우(18223) 문제 설명 1번 노드에서 V번까지 가는 최단거리가 1번에서 P번 노드를 거쳐 V번 노드까지 가는 최단거리보다 작거나 같은지 판별하세요. 입력 V(노드의 갯수, 1 1로 가는 최단거리 + P -> V로 가는 최단거리를 더하면 됩니다. 시간복잡도 O(M * logM) 코드 #include #include #include #include #include #define N 5001 using namespace std; typedef pairP; int n,m,p,a,b,c,d[N],e[N],w[N]; vectorv[N]; priority_queueq; void r(int s,int d[]){ memset(w,0,sizeof(w)); q.push({0,..
문제 링크 : [백준]브리징 시그널(3066) 문제 설명 LIS문제입니다. 입력 T(테스트 케이스 갯수) N(포트의 갯수, 1 t; while(t--){ v.clear(); cin>>n; while(n--){ cin>>x; if(v.empty()||v.back()
문제 링크 : [백준]전구(2550) 문제 설명 스위치와 매핑되는 전구들의 입력이 주어집니다. 스위치를 눌러 전구를 켜는데, 선이 교차되는 경우에는 켜지지 않습니다. 최대한 많은 전구를 켤 때의 갯수와 그때 눌러야 할 스위치 번호를 구하세요. 입력 N(전구의 갯수, 1
문제 링크 : [백준]간선 이어가기 2(14284) 문제 설명 연결이 없는 노드 N개가 주어집니다. 그 이후에 M개의 무방향 가중치 엣지가 주어집니다. 출발지 S와 도착지 T가 주어지면, 이전에 주어진 간선들의 순서를 원하는대로 바꾸고 순서대로 하나씩 간선을 이어나가다가 S와 T가 이어지는 순간 작업을 멈춥니다. 이때 이은 간선들의 가중치의 합의 최소값을 구하세요. 입력 N(노드의 갯수, 1 a>>b>>c; v[a].push_back({c,b}); v[b].push_back({c,a}); } cin>>a>>b; q.push({0,a}); while(!q.empty()){ P x=q.top();q.pop(); if(d[x.second])continue; d[x.second]=1; if(x.second==b..
문제 링크 : [백준]소가 길을 건너간 이유 7(14461) 문제 설명 N * N 행렬이 주어지고, 각 칸에는 풀의 양이 주어집니다. 소는 (1,1)에서 출발하여, (N,N)까지 이동해야 합니다. 각 칸을 이동 할 때는 T초가 걸리며, 소가 세칸을 이동한 후에는 그 칸의 풀을 먹어야 합니다. 소가 도착하는데 걸리는 최소 시간을 구하세요. 입력 N(행렬의 크기, 1
문제 링크 : [백준]백도어(17396) 문제 설명 N개의 노드와 M개의 비용을 포함한 엣지 정보가 주어집니다. 또한 각 노드를 경우할 수 있는지 여부도 주어집니다.(N-1번 노드는 1이어도 방문 가능합니다.) 0번 노드에서 시작하여 N-1번 노드까지 가는 최단 경로를 구하세요. 입력 N(노드의 갯수, 1 d[i]; d[n-1]=0; while(m--){ cin>>a>>b>>c; v[a].push_back({c,b}); v[b].push_back({c,a}); } q.push({0,0}); while(!q.empty()){ P x=q.top();q.pop(); if(e[x.second])continue; e[x.second]=1; if(x.second==n-1){ cout