Upload files to "백준"
This commit is contained in:
36
백준/1516.py
Normal file
36
백준/1516.py
Normal file
@@ -0,0 +1,36 @@
|
||||
import sys
|
||||
import math
|
||||
from collections import deque
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
N = int(input())
|
||||
time = [0] * (N+1)
|
||||
build_time = [0] * (N+1)
|
||||
a = [[] for _ in range(N+1)]
|
||||
indegree = [0] * (N+1)
|
||||
|
||||
for i in range(1, N+1):
|
||||
temp = list(map(int, input().split()))
|
||||
build_time[i] = temp[0]
|
||||
time[i] = temp[0]
|
||||
for k in temp[1:-1]:
|
||||
a[k].append(i)
|
||||
indegree[i] += 1
|
||||
|
||||
queue = deque()
|
||||
|
||||
for i in range(1, N+1):
|
||||
if(indegree[i]==0):
|
||||
queue.append(i)
|
||||
|
||||
while queue:
|
||||
curr = queue.popleft()
|
||||
for next in a[curr]:
|
||||
indegree[next] -= 1
|
||||
build_time[next] = max(build_time[next], build_time[curr] + time[next])
|
||||
if indegree[next] == 0:
|
||||
queue.append(next)
|
||||
|
||||
for i in range(1, N+1):
|
||||
print(build_time[i])
|
||||
44
백준/1517.Py
Normal file
44
백준/1517.Py
Normal file
@@ -0,0 +1,44 @@
|
||||
import sys
|
||||
|
||||
N = int(sys.stdin.readline().rstrip())
|
||||
arr = list(map(int, input().split(' ')))
|
||||
arr.insert(0, 0)
|
||||
tarr = [0] * (N+1)
|
||||
num=0
|
||||
|
||||
|
||||
def ms(s, e):
|
||||
global num
|
||||
if(e-s<1):
|
||||
return
|
||||
m = int(s + (e-s)/2)
|
||||
ms(s, m)
|
||||
ms(m+1, e)
|
||||
for i in range(s, e+1):
|
||||
tarr[i] = arr[i]
|
||||
k=s
|
||||
index1 = s
|
||||
index2 = m+1
|
||||
while index1<=m and index2 <=e :
|
||||
if tarr[index1] > tarr[index2]:
|
||||
arr[k]=tarr[index2]
|
||||
num = num + m
|
||||
k += 1
|
||||
index2+=1
|
||||
else:
|
||||
arr[k]=tarr[index1]
|
||||
k += 1
|
||||
index1 += 1
|
||||
while index1<=m:
|
||||
arr[k]=tarr[index1]
|
||||
k += 1
|
||||
index1 += 1
|
||||
while index2<=e:
|
||||
arr[k]=tarr[index2]
|
||||
k+=1
|
||||
index2+=1
|
||||
|
||||
ms(1, N)
|
||||
|
||||
print(num)
|
||||
|
||||
25
백준/1654.py
Normal file
25
백준/1654.py
Normal file
@@ -0,0 +1,25 @@
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
k, n = map(int, input().split())
|
||||
arr = []
|
||||
for _ in range(k):
|
||||
arr.append(int(input()))
|
||||
|
||||
start = 1
|
||||
end = max(arr)
|
||||
result = 0
|
||||
|
||||
while start <= end:
|
||||
mid = (start + end) // 2
|
||||
count = 0
|
||||
for i in range(k):
|
||||
count+=arr[i]//mid
|
||||
if count >= n:
|
||||
result = mid
|
||||
start = mid + 1
|
||||
else:
|
||||
end = mid - 1
|
||||
|
||||
print(result)
|
||||
23
백준/1655.py
Normal file
23
백준/1655.py
Normal file
@@ -0,0 +1,23 @@
|
||||
import sys
|
||||
from heapq import heappop, heappush
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
n = int(input())
|
||||
min_heap = []
|
||||
max_heap = []
|
||||
|
||||
for i in range(n):
|
||||
k = int(input())
|
||||
if len(min_heap) == len(max_heap):
|
||||
heappush(max_heap, -k)
|
||||
else:
|
||||
heappush(min_heap, k)
|
||||
|
||||
if min_heap and -max_heap[0] > min_heap[0] :
|
||||
temp_max = heappop(max_heap)
|
||||
temp_min = heappop(min_heap)
|
||||
heappush(max_heap, -temp_min)
|
||||
heappush(min_heap, -temp_max)
|
||||
|
||||
print(-max_heap[0])
|
||||
29
백준/1697.py
Normal file
29
백준/1697.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from collections import deque
|
||||
|
||||
n, K = map(int, input().split())
|
||||
max_val = 100001 # 문제 범위: 0 ≤ 위치 ≤ 100000
|
||||
|
||||
# 각 위치에 도달하는 최소 시간 (방문하지 않은 경우 -1)
|
||||
dist = [-1] * max_val
|
||||
# 각 위치에 도달하는 방법의 수
|
||||
ways = [0] * max_val
|
||||
|
||||
q = deque([n])
|
||||
dist[n] = 0
|
||||
ways[n] = 1
|
||||
|
||||
while q:
|
||||
cur = q.popleft()
|
||||
for next in (cur - 1, cur + 1, cur * 2):
|
||||
if 0 <= next < max_val:
|
||||
# 아직 방문하지 않은 경우
|
||||
if dist[next] == -1:
|
||||
dist[next] = dist[cur] + 1
|
||||
ways[next] = ways[cur]
|
||||
q.append(next)
|
||||
# 동일한 최소 시간으로 도달하는 경우
|
||||
elif dist[next] == dist[cur] + 1:
|
||||
ways[next] += ways[cur]
|
||||
|
||||
print(dist[K])
|
||||
print(ways[K])
|
||||
Reference in New Issue
Block a user