Skip to content

Commit d5c97d7

Browse files
committed
add ALDS1
1 parent a92c37a commit d5c97d7

File tree

53 files changed

+3069
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+3069
-0
lines changed

AOJ/ALDS1/ALDS1_10_A/Main.java

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
final boolean DEBUG = false;
5+
final int MAX_N = 44;
6+
void run() {
7+
Scanner scan = new Scanner(System.in);
8+
int[] dp = new int[MAX_N + 1];
9+
dp[0] = dp[1] = 1;
10+
for (int i = 2; i <= MAX_N; i++)
11+
dp[i] = dp[i - 1] + dp[i - 2];
12+
int n = scan.nextInt();
13+
System.out.println(dp[n]);
14+
}
15+
public static void main(String[] args) {
16+
new Main().run();
17+
}
18+
}

AOJ/ALDS1/ALDS1_10_B/Main.java

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
final static boolean DEBUG = false;
5+
final static int INF = Integer.MAX_VALUE;
6+
class Pair {
7+
int r, c;
8+
Pair(int r, int c) {
9+
this.r = r;
10+
this.c = c;
11+
}
12+
}
13+
void run() {
14+
Scanner scan = new Scanner(System.in);
15+
int n = scan.nextInt();
16+
Pair[] pairs = new Pair[n];
17+
for (int i = 0; i < n; i++) {
18+
int r = scan.nextInt();
19+
int c = scan.nextInt();
20+
pairs[i] = new Pair(r, c);
21+
}
22+
int[][] dp = new int[n][n];
23+
for (int i = 0; i < n; i++)
24+
for (int j = 0; j < n; j++)
25+
dp[i][j] = INF;
26+
27+
for (int i = 0; i < n; i++)
28+
dp[i][i] = 0;
29+
30+
for (int j = 1; j < n; j++) {
31+
for (int i = 0; i < n - j; i++) {
32+
for (int k = i; k < i + j; k++) {
33+
dp[i][i + j] = Math.min(dp[i][i + j], dp[i][k] + dp[k + 1][i + j] + (pairs[i].r * pairs[k].c * pairs[i + j].c));
34+
}
35+
}
36+
}
37+
if (DEBUG) {
38+
for (int i = 0; i < n; i++) {
39+
for (int j = 0; j < n; j++)
40+
System.out.print((dp[i][j] == INF ? "X" : dp[i][j]) + " ");
41+
System.out.println();
42+
}
43+
System.out.println();
44+
}
45+
System.out.println(dp[0][n - 1]);
46+
}
47+
public static void main(String[] args) {
48+
new Main().run();
49+
}
50+
}

AOJ/ALDS1/ALDS1_10_C/Main.java

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
void run() {
5+
Scanner scan = new Scanner(System.in);
6+
int q = scan.nextInt();
7+
for (int t = 0; t < q; t++) {
8+
char[] x = scan.next().toCharArray();
9+
char[] y = scan.next().toCharArray();
10+
11+
int[][] dp = new int[x.length + 1][y.length + 1];
12+
13+
for (int i = 1; i <= x.length; i++) {
14+
for (int j = 1; j <= y.length; j++) {
15+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
16+
if (x[i - 1] == y[j - 1])
17+
dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 1] + 1);
18+
}
19+
}
20+
System.out.println(dp[x.length][y.length]);
21+
}
22+
}
23+
public static void main(String[] args) {
24+
new Main().run();
25+
}
26+
}

AOJ/ALDS1/ALDS1_11_A/Main.java

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
void run() {
5+
Scanner scan = new Scanner(System.in);
6+
int n = scan.nextInt();
7+
boolean[][] g = new boolean[n][n];
8+
for (int i = 0; i < n; i++) {
9+
int u = scan.nextInt();
10+
int k = scan.nextInt();
11+
for (int j = 0; j < k; j++) {
12+
int v = scan.nextInt();
13+
g[u - 1][v - 1] = true;
14+
}
15+
}
16+
for (int i = 0; i < n; i++)
17+
for (int j = 0; j < n; j++)
18+
System.out.print((g[i][j] ? 1 : 0) + (j == n - 1 ? "\n" : " "));
19+
}
20+
public static void main(String[] args) {
21+
new Main().run();
22+
}
23+
}

AOJ/ALDS1/ALDS1_11_B/Main.java

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
int n, deep;
5+
int[] d, f;
6+
boolean[][] g;
7+
void run() {
8+
Scanner scan = new Scanner(System.in);
9+
n = scan.nextInt();
10+
g = new boolean[n][n];
11+
for (int i = 0; i < n; i++) {
12+
int u = scan.nextInt();
13+
int k = scan.nextInt();
14+
for (int j = 0; j < k; j++) {
15+
int v = scan.nextInt();
16+
g[u - 1][v - 1] = true;
17+
}
18+
}
19+
deep = 0;
20+
d = new int[n];
21+
f = new int[n];
22+
dfs(0);
23+
for (int i = 0; i < n; i++)
24+
if (d[i] == 0)
25+
dfs(i);
26+
27+
for (int i = 0; i < n; i++)
28+
System.out.println((i + 1) + " " + d[i] + " " + f[i]);
29+
}
30+
void dfs(int u) {
31+
if (d[u] > 0 || f[u] > 0)
32+
return;
33+
34+
d[u] = ++deep;
35+
for (int i = 0; i < n; i++)
36+
if (g[u][i])
37+
dfs(i);
38+
f[u] = ++deep;
39+
}
40+
public static void main(String[] args) {
41+
new Main().run();
42+
}
43+
}

AOJ/ALDS1/ALDS1_11_C/Main.java

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.LinkedList;
2+
import java.util.Queue;
3+
import java.util.Scanner;
4+
5+
public class Main {
6+
final int INF = Integer.MAX_VALUE;
7+
8+
void run() {
9+
Scanner scan = new Scanner(System.in);
10+
int n = scan.nextInt();
11+
12+
boolean[][] g = new boolean[n][n];
13+
for (int i = 0; i < n; i++) {
14+
int u = scan.nextInt();
15+
int k = scan.nextInt();
16+
for (int j = 0; j < k; j++) {
17+
int v = scan.nextInt();
18+
g[u - 1][v - 1] = true;
19+
}
20+
}
21+
22+
int time = 0;
23+
int[] d = new int[n];
24+
boolean[] isSearched = new boolean[n];
25+
Queue<Integer> que = new LinkedList<Integer>();
26+
27+
for (int i = 0; i < n; i++)
28+
d[i] = INF;
29+
que.add(0);
30+
while (!que.isEmpty()) {
31+
int length = que.size();
32+
for (int i = 0; i < length; i++) {
33+
int id = que.poll();
34+
if (isSearched[id])
35+
continue;
36+
d[id] = Math.min(d[id], time);
37+
for (int j = 0; j < n; j++)
38+
if (g[id][j])
39+
que.add(j);
40+
isSearched[id] = true;
41+
}
42+
time++;
43+
}
44+
for (int i = 0; i < n; i++)
45+
System.out.println((i + 1) + " " + (isSearched[i] ? d[i] : -1));
46+
}
47+
public static void main(String[] args) {
48+
new Main().run();
49+
}
50+
}

AOJ/ALDS1/ALDS1_11_D/Main.java

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
class UnionFind {
5+
private int[] par, rank;
6+
UnionFind(int n) {
7+
par = new int[n];
8+
rank = new int[n];
9+
for (int i = 0; i < n; i++)
10+
par[i] = i;
11+
}
12+
int find(int x) {
13+
if (par[x] == x)
14+
return x;
15+
else
16+
return par[x] = find(par[x]);
17+
}
18+
void unite(int x, int y) {
19+
x = find(x);
20+
y = find(y);
21+
if (x == y)
22+
return;
23+
if (rank[x] < rank[y]) {
24+
par[x] = y;
25+
} else {
26+
par[y] = x;
27+
if (rank[x] == rank[y])
28+
rank[x]++;
29+
}
30+
}
31+
boolean same(int x, int y) {
32+
return find(x) == find(y);
33+
}
34+
}
35+
void run() {
36+
Scanner scan = new Scanner(System.in);
37+
int n = scan.nextInt();
38+
int m = scan.nextInt();
39+
UnionFind uf = new UnionFind(n);
40+
for (int i = 0; i < m; i++) {
41+
int s = scan.nextInt();
42+
int t = scan.nextInt();
43+
uf.unite(s, t);
44+
}
45+
46+
int q = scan.nextInt();
47+
for (int i = 0; i < q; i++) {
48+
int s = scan.nextInt();
49+
int t = scan.nextInt();
50+
System.out.println(uf.same(s, t) ? "yes" : "no");
51+
}
52+
53+
}
54+
public static void main(String[] args) {
55+
new Main().run();
56+
}
57+
}

AOJ/ALDS1/ALDS1_12_A/Main.java

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
final int INF = Integer.MAX_VALUE;
5+
void run() {
6+
Scanner scan = new Scanner(System.in);
7+
int n = scan.nextInt();
8+
int[][] cost = new int[n][n];
9+
int[] minCost = new int[n];
10+
boolean[] isUsed = new boolean[n];
11+
12+
for (int i = 0; i < n; i++) {
13+
for (int j = 0; j < n; j++) {
14+
int a = scan.nextInt();
15+
cost[i][j] = a != -1 ? a : INF;
16+
}
17+
}
18+
for (int i = 0; i < n; i++)
19+
minCost[i] = INF;
20+
21+
minCost[0] = 0;
22+
int res = 0;
23+
24+
while (true) {
25+
int v = -1;
26+
for (int u = 0; u < n; u++)
27+
if (!isUsed[u] && (v == -1 || minCost[u] < minCost[v]))
28+
v = u;
29+
30+
if (v == -1)
31+
break;
32+
isUsed[v] = true;
33+
res += minCost[v];
34+
35+
for (int u = 0; u < n; u++)
36+
minCost[u] = Math.min(minCost[u], cost[v][u]);
37+
}
38+
System.out.println(res);
39+
}
40+
public static void main(String[] args) {
41+
new Main().run();
42+
}
43+
}

AOJ/ALDS1/ALDS1_12_B/Main.java

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
final int INF = Integer.MAX_VALUE / 2;
5+
void run() {
6+
Scanner scan = new Scanner(System.in);
7+
int n = scan.nextInt();
8+
int[][] g = new int[n][n];
9+
10+
for (int i = 0; i < n; i++)
11+
for (int j = 0; j < n; j++)
12+
g[i][j] = INF;
13+
for (int i = 0; i < n; i++)
14+
g[i][i] = 0;
15+
16+
for (int i = 0; i < n; i++) {
17+
int u = scan.nextInt();
18+
int k = scan.nextInt();
19+
for (int j = 0; j < k; j++) {
20+
int v = scan.nextInt();
21+
int c = scan.nextInt();
22+
g[u][v] = c;
23+
}
24+
}
25+
26+
for (int k = 0; k < n; k++) for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) {
27+
g[i][j] = Math.min(g[i][j], g[i][k] + g[k][j]);
28+
}
29+
30+
for (int i = 0; i < n; i++) {
31+
System.out.println(i + " " + g[0][i]);
32+
}
33+
}
34+
public static void main(String[] args) {
35+
new Main().run();
36+
}
37+
}

0 commit comments

Comments
 (0)