baekjoon 20251224
This commit is contained in:
parent
c08508c4cb
commit
59fb800c04
58
code_study/Baekjoon/c/1005_1.c
Normal file
58
code_study/Baekjoon/c/1005_1.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int dp[1001];
|
||||||
|
int build_info[1001][1001];
|
||||||
|
int build_time[1001];
|
||||||
|
int T, N, K, W;
|
||||||
|
|
||||||
|
int max(int a, int b) {
|
||||||
|
return a > b ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
int solve(int target);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
scanf("%d", &T);
|
||||||
|
|
||||||
|
int* ans = (int*)malloc(sizeof(int)*T);
|
||||||
|
|
||||||
|
for(int t=0; t<T; t++) {
|
||||||
|
scanf("%d %d",&N, &K);
|
||||||
|
|
||||||
|
for(int i=1; i<=N; i++) {
|
||||||
|
scanf("%d",&build_time[i]);
|
||||||
|
build_info[i][0] = 0;
|
||||||
|
dp[i] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0; i<K; i++) {
|
||||||
|
int u, v;
|
||||||
|
scanf("%d %d",&u, &v);
|
||||||
|
build_info[v][++build_info[v][0]] = u;
|
||||||
|
}
|
||||||
|
|
||||||
|
scanf("%d", &W);
|
||||||
|
|
||||||
|
ans[t] = solve(W);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int t=0; t<T; t++) printf("%d\n", ans[t]);
|
||||||
|
free(ans);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int solve(int target) {
|
||||||
|
if(dp[target] == -1) {
|
||||||
|
int max_built_time = 0;
|
||||||
|
for(int i=1; i<=build_info[target][0]; i++) {
|
||||||
|
int prev = build_info[target][i];
|
||||||
|
max_built_time = max(max_built_time, solve(prev));
|
||||||
|
}
|
||||||
|
|
||||||
|
dp[target] = max_built_time + build_time[target];
|
||||||
|
}
|
||||||
|
|
||||||
|
return dp[target];
|
||||||
|
}
|
||||||
75
code_study/Baekjoon/c/1005_2.c
Normal file
75
code_study/Baekjoon/c/1005_2.c
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int T, N, K, W;
|
||||||
|
int dp[1001];
|
||||||
|
int build_info[1001][1001];
|
||||||
|
int build_time[1001];
|
||||||
|
int indegree[1001];
|
||||||
|
int q[1001];
|
||||||
|
|
||||||
|
int max(int a, int b) {
|
||||||
|
return a > b ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
int solve();
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
scanf("%d", &T);
|
||||||
|
|
||||||
|
int* ans = (int*)malloc(sizeof(int)*T);
|
||||||
|
|
||||||
|
for(int t=0; t<T; t++) {
|
||||||
|
scanf("%d %d",&N, &K);
|
||||||
|
|
||||||
|
for(int i=1; i<=N; i++) {
|
||||||
|
scanf("%d",&build_time[i]);
|
||||||
|
build_info[i][0] = 0;
|
||||||
|
indegree[i] = 0;
|
||||||
|
dp[i] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0; i<K; i++) {
|
||||||
|
int u, v;
|
||||||
|
scanf("%d %d",&u, &v);
|
||||||
|
build_info[u][++build_info[u][0]] = v;
|
||||||
|
indegree[v]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
scanf("%d", &W);
|
||||||
|
|
||||||
|
ans[t] = solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int t=0; t<T; t++) printf("%d\n", ans[t]);
|
||||||
|
free(ans);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int solve() {
|
||||||
|
int front = 0, rear = 0;
|
||||||
|
for(int i=1; i<=N; i++) {
|
||||||
|
if(indegree[i] == 0) {
|
||||||
|
q[rear++] = i;
|
||||||
|
dp[i] = build_time[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while(front != rear) {
|
||||||
|
int now = q[front++];
|
||||||
|
|
||||||
|
if(now == W) break;
|
||||||
|
|
||||||
|
for(int i=1; i<=build_info[now][0]; i++) {
|
||||||
|
int next = build_info[now][i];
|
||||||
|
|
||||||
|
dp[next] = max(dp[next], dp[now] + build_time[next]);
|
||||||
|
|
||||||
|
indegree[next]--;
|
||||||
|
if(indegree[next] == 0) q[rear++] = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dp[W];
|
||||||
|
}
|
||||||
44
code_study/Baekjoon/python/1005_2.py
Normal file
44
code_study/Baekjoon/python/1005_2.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
from collections import deque
|
||||||
|
import sys
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
ans = []
|
||||||
|
T = int(input())
|
||||||
|
|
||||||
|
for _ in range(T) :
|
||||||
|
N, K = map(int, input().split())
|
||||||
|
|
||||||
|
build_info = [[] for _ in range(N+1)]
|
||||||
|
dp = [-1]*(N+1)
|
||||||
|
build_time = [0] + list(map(int, input().split()))
|
||||||
|
indegree = [0]*(N+1)
|
||||||
|
|
||||||
|
for _ in range(K) :
|
||||||
|
u, v = map(int, input().split())
|
||||||
|
build_info[u].append(v)
|
||||||
|
indegree[v] += 1
|
||||||
|
|
||||||
|
W = int(input())
|
||||||
|
|
||||||
|
qu = deque()
|
||||||
|
|
||||||
|
for i in range(1, N+1) :
|
||||||
|
if indegree[i] == 0 :
|
||||||
|
qu.append(i)
|
||||||
|
dp[i] = build_time[i]
|
||||||
|
|
||||||
|
while qu :
|
||||||
|
now = qu.popleft()
|
||||||
|
if now == W :
|
||||||
|
break
|
||||||
|
|
||||||
|
for next in build_info[now] :
|
||||||
|
dp[next] = max(dp[next], dp[now] + build_time[next])
|
||||||
|
|
||||||
|
indegree[next] -= 1
|
||||||
|
if indegree[next] == 0 :
|
||||||
|
qu.append(next)
|
||||||
|
|
||||||
|
ans.append(str(dp[W]))
|
||||||
|
|
||||||
|
print('\n'.join(ans))
|
||||||
9
code_study/Baekjoon/python/5532.py
Normal file
9
code_study/Baekjoon/python/5532.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
L = int(input())
|
||||||
|
A = int(input())
|
||||||
|
B = int(input())
|
||||||
|
C = int(input())
|
||||||
|
D = int(input())
|
||||||
|
|
||||||
|
ceil = lambda x, y : (x+y-1)//y
|
||||||
|
|
||||||
|
print(L - max(ceil(A,C), ceil(B,D)))
|
||||||
Loading…
x
Reference in New Issue
Block a user