Skip to content

Commit aa918fb

Browse files
author
Eric
committed
Merge remote-tracking branch 'upstream/main'
2 parents 2952e42 + 48630ba commit aa918fb

9 files changed

Lines changed: 265 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""
2+
dp[1] = 1
3+
dp[2] = 2 (1+1, 2)
4+
dp[3] = 4 (1+1+1, 1+2(*2), 3)
5+
dp[4] = 7
6+
dp[5] = 13
7+
dp[6] = 24
8+
dp[7] = 44
9+
dp[n] = dp[n-1] + dp[n-2] + dp[n-3]
10+
"""
11+
import sys
12+
13+
input = sys.stdin.readline
14+
15+
16+
dp = [0] * 11
17+
dp[1] = 1
18+
dp[2] = 2
19+
dp[3] = 4
20+
21+
for i in range(4, 11):
22+
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
23+
24+
t = int(input())
25+
for _ in range(t):
26+
n = int(input())
27+
print(dp[n])
28+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
dp = [-1] * 11
2+
3+
def main():
4+
T = int(input())
5+
6+
for i in range(T):
7+
n = int(input())
8+
9+
print(recursion(n))
10+
11+
12+
def recursion(n):
13+
if n == 0:
14+
return 1
15+
if n < 0:
16+
return 0
17+
18+
if dp[n] != -1:
19+
return dp[n]
20+
21+
dp[n] = recursion(n-1) + recursion(n-2) + recursion(n-3)
22+
23+
return dp[n]
24+
25+
if __name__ == "__main__":
26+
main()
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const fs = require("fs");
2+
const path = require("path");
3+
4+
const filePath =
5+
process.platform === "linux"
6+
? "/dev/stdin"
7+
: path.join(__dirname, "input.txt");
8+
9+
const input = fs
10+
.readFileSync(filePath, "utf8")
11+
.toString()
12+
.trim()
13+
.split("\n")
14+
.map(Number);
15+
16+
function solution(input) {
17+
const T = input[0];
18+
const arr = input.slice(1);
19+
const result = [];
20+
21+
function dfs(sum, target) {
22+
if (sum === target) return 1;
23+
if (sum > target) return 0;
24+
25+
return dfs(sum + 1, target) + dfs(sum + 2, target) + dfs(sum + 3, target);
26+
}
27+
28+
for (let i = 0; i < T; i++) {
29+
const n = arr[i];
30+
result.push(dfs(0, n));
31+
}
32+
33+
return result;
34+
}
35+
36+
console.log(solution(input).join("\n"));
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import sys
2+
3+
input = sys.stdin.readline
4+
5+
n = int(input())
6+
color = [list(map(int, input().split())) for _ in range(n)]
7+
8+
for i in range(n-1):
9+
min_cost = min(color[i])
10+
min_idx = color[i].index(min_cost)
11+
for j in range(3):
12+
if j != min_idx:
13+
color[i+1][j] += min_cost
14+
else:
15+
color[i][min_idx] = float('inf')
16+
color[i+1][j] += min(color[i])
17+
18+
print(min(color[-1]))
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
def main():
2+
N = int(input())
3+
cost = [list(map(int, input().split())) for _ in range(N)]
4+
5+
dp = [[0] * 3 for _ in range(N)]
6+
7+
dp[0][0] = cost[0][0]
8+
dp[0][1] = cost[0][1]
9+
dp[0][2] = cost[0][2]
10+
11+
for i in range(1, N):
12+
dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + cost[i][0]
13+
dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + cost[i][1]
14+
dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + cost[i][2]
15+
16+
print(min(dp[N-1]))
17+
18+
19+
if __name__ == "__main__":
20+
main()
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const fs = require("fs");
2+
const path = require("path");
3+
4+
const filePath =
5+
process.platform === "linux"
6+
? "/dev/stdin"
7+
: path.join(__dirname, "input.txt");
8+
9+
const input = fs
10+
.readFileSync(filePath, "utf8")
11+
.toString()
12+
.trim()
13+
.split("\n")
14+
.map((value) => value.split(" ").map(Number));
15+
16+
function solution(input) {
17+
const N = input[0][0];
18+
const costs = input.slice(1);
19+
const dp = [...costs[0]];
20+
21+
for (let i = 1; i < N; i++) {
22+
const temp = [0, 0, 0];
23+
for (let j = 0; j < 3; j++) {
24+
if (j === 0) temp[0] = costs[i][0] + Math.min(dp[1], dp[2]);
25+
else if (j === 1) temp[1] = costs[i][1] + Math.min(dp[0], dp[2]);
26+
else if (j === 2) temp[2] = costs[i][2] + Math.min(dp[0], dp[1]);
27+
}
28+
dp.splice(0, 3, ...temp);
29+
}
30+
31+
return Math.min(...dp);
32+
}
33+
34+
console.log(solution(input));
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from collections import *
2+
3+
def solution(n, edge):
4+
5+
graph = [[] for _ in range(n + 1)]
6+
7+
for a, b in edge:
8+
graph[a].append(b)
9+
graph[b].append(a)
10+
11+
visited = [0] * (n + 1)
12+
visited[1] = 1
13+
14+
def bfs(x):
15+
q = deque([x])
16+
while q:
17+
x = q.popleft()
18+
for nei in graph[x]:
19+
if not visited[nei]:
20+
visited[nei] = visited[x] + 1
21+
q.append(nei)
22+
bfs(1)
23+
24+
return visited.count(max(visited))
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from collections import deque
2+
3+
def solution(n, edge):
4+
graph = [[] for _ in range(n + 1)]
5+
6+
for a, b in edge:
7+
graph[a].append(b)
8+
graph[b].append(a)
9+
10+
distance = [-1] * (n + 1)
11+
distance[1] = 0
12+
13+
queue = deque([1])
14+
15+
while queue:
16+
now = queue.popleft()
17+
for neighbor in graph[now]:
18+
if distance[neighbor] == -1:
19+
distance[neighbor] = distance[now] + 1
20+
queue.append(neighbor)
21+
22+
max_distance = max(distance)
23+
24+
return distance.count(max_distance)
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
function solution(n, edge) {
2+
const map = Array(n + 1)
3+
.fill()
4+
.map(() => []);
5+
for (let i = 0; i < edge.length; i++) {
6+
let a = edge[i][0];
7+
let b = edge[i][1];
8+
map[a].push(b);
9+
map[b].push(a);
10+
}
11+
12+
const visited = Array(n + 1).fill(0);
13+
const q = [];
14+
q.push(1);
15+
visited[1] = 1;
16+
17+
while (q.length > 0) {
18+
const now = q.shift();
19+
for (let i = 0; i < map[now].length; i++) {
20+
let next = map[now][i];
21+
if (visited[next] === 0) {
22+
visited[next] = visited[now] + 1;
23+
q.push(next);
24+
}
25+
}
26+
}
27+
28+
let max = 0;
29+
for (let i = 0; i < visited.length; i++) {
30+
if (visited[i] > max) {
31+
max = visited[i];
32+
}
33+
}
34+
35+
let answer = 0;
36+
for (let i = 0; i < visited.length; i++) {
37+
if (visited[i] === max) {
38+
answer++;
39+
}
40+
}
41+
42+
return answer;
43+
}
44+
45+
console.log(
46+
solution([
47+
[3, 6],
48+
[4, 3],
49+
[3, 2],
50+
[1, 3],
51+
[1, 2],
52+
[2, 4],
53+
[5, 2],
54+
])
55+
);

0 commit comments

Comments
 (0)