Skip to content

Commit ec4883c

Browse files
committed
test
1 parent 156030b commit ec4883c

File tree

4 files changed

+219
-0
lines changed

4 files changed

+219
-0
lines changed

SGU/218.java

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import java.io.BufferedInputStream;
2+
import java.util.Arrays;
3+
import java.util.Scanner;
4+
5+
6+
public class Solution {
7+
8+
final static int N = 511;
9+
static int match[] = new int[N];
10+
static boolean st[] = new boolean [N];
11+
static boolean g[][] = new boolean [N][N];
12+
static int a[][] = new int [N][N];
13+
static int n;
14+
15+
boolean DFS (int x) {
16+
int i, t;
17+
for (i = 1; i <= n; ++i) if (!st[i] && g[i][x]) {
18+
t = match[i];
19+
match[i] = x;
20+
st[i] = true;
21+
if (t == 0 || DFS (t)) return true;
22+
match[i] = t;
23+
}
24+
return false;
25+
}
26+
27+
boolean chk (int x) {
28+
int i, j, k;
29+
for (i = 1; i <= n; ++i)
30+
for (j = 1; j <= n; ++j)
31+
g[i][j] = a[i][j] <= x ? true : false;
32+
33+
int ans = 0; Arrays.fill (match, 0);
34+
for (i = 1; i <= n; ++i) {
35+
Arrays.fill (st, false);
36+
if (DFS (i)) ans++;
37+
}
38+
return ans == n;
39+
}
40+
41+
void sgu218 () {
42+
Scanner in = new Scanner (new BufferedInputStream (System.in));
43+
int c[] = new int [N*N];
44+
int i, j, k;
45+
46+
n = in.nextInt();
47+
k = 0;
48+
for (i = 1; i <= n; ++i)
49+
for (j = 1; j <= n; ++j) {
50+
a[i][j] = in.nextInt();
51+
c[k] = a[i][j];
52+
k++;
53+
}
54+
Arrays.sort (c, 0, k);
55+
int low = 0, up = k - 1;
56+
while (up > low) {
57+
int mid = (low + up) / 2;
58+
if (chk (c[mid]))
59+
up = mid;
60+
else
61+
low = mid + 1;
62+
}
63+
chk (c[up]);
64+
System.out.println(c[up]);
65+
for (i = 1; i <= n; ++i)
66+
System.out.printf ("%d %d\n", i, match[i]);
67+
}
68+
69+
public static void main(String[] args) {
70+
Solution sguSolver = new Solution ();
71+
sguSolver.sgu218 ();
72+
}
73+
}

SGU/222.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import java.io.BufferedInputStream;
2+
import java.util.Scanner;
3+
4+
5+
public class Solution {
6+
7+
void sgu222 () {
8+
Scanner in = new Scanner (new BufferedInputStream (System.in));
9+
int C[][] = new int [11][11];
10+
int n, k, i, j;
11+
12+
for (i = 0; i <= 10; ++i) {
13+
C[i][0] = C[i][i] = 1;
14+
}
15+
for (i = 2; i <= 10; ++i)
16+
for (j = 1; j < i; ++j)
17+
C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
18+
19+
n = in.nextInt(); k = in.nextInt ();
20+
if (k > n) System.out.println ('0');
21+
else {
22+
int ans = 1;
23+
for (i = n; i > n - k; --i) ans *= i;
24+
System.out.println(ans * C[n][k]);
25+
}
26+
}
27+
28+
public static void main(String[] args) {
29+
Solution sguSolver = new Solution ();
30+
sguSolver.sgu222 ();
31+
}
32+
}

SGU/223.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import java.io.BufferedInputStream;
2+
import java.util.Scanner;
3+
4+
5+
public class Solution {
6+
7+
static int n;
8+
int chk (int x) {
9+
int d[] = new int [10];
10+
int i, j = 0, n = 0;
11+
while (x != 0) {
12+
d[n] = x % 2;
13+
x /= 2;
14+
j += d[n]; n++;
15+
}
16+
for (i = 0; i < n; ++i) if (d[i] > 0) {
17+
if (i > 1 && d[i-1] > 0 || i < n - 1 && d[i+1] > 0) return -1;
18+
}
19+
return j;
20+
}
21+
boolean cpt (int x, int y) {
22+
int i;
23+
for (i = 0; i < n; ++i) if ((x & (1<<i)) > 0) {
24+
if ((y & (1<<i)) > 0) return false;
25+
if (i > 0 && (y & (1<<(i-1))) > 0) return false;
26+
if (i < n - 1 && (y & (1<<(i+1))) > 0) return false;
27+
}
28+
return true;
29+
}
30+
31+
void sgu223 () {
32+
Scanner in = new Scanner (new BufferedInputStream (System.in));
33+
int i, j, m;
34+
n = in.nextInt (); m = in.nextInt ();
35+
int tot = 1<<n;
36+
int [] cnt = new int[150];
37+
int [] L = new int [150]; int ln = 0;
38+
boolean ok[][] = new boolean [150][150];
39+
long d[][][] = new long [n + 1][n*n*3][150];
40+
41+
for (i = 0; i < tot; ++i)
42+
if ((j = chk (i)) >= 0) {
43+
ln++;
44+
L[ln] = i;
45+
cnt[ln] = j;
46+
}
47+
48+
for (i = 1; i <= ln; ++i)
49+
for (j = i; j <= ln; ++j)
50+
ok[j][i] = ok[i][j] = cpt (L[i], L[j]);
51+
52+
for (i = 1; i <= ln; ++i)
53+
d[1][cnt[i]][i] = 1;
54+
for (i = 1; i < n; ++i)
55+
for (j = 0; j <= m; ++j)
56+
for (int s1 = 1; s1 <= ln; ++s1)
57+
for (int s2 = 1; s2 <= ln; ++s2) if (ok[s1][s2])
58+
d[i+1][j + cnt[s2]][s2] += d[i][j][s1];
59+
60+
long ans = 0;
61+
for (int s = 1; s <= ln; ++s)
62+
ans += d[n][m][s];
63+
System.out.println (ans);
64+
}
65+
66+
public static void main(String[] args) {
67+
Solution sguSolver = new Solution ();
68+
sguSolver.sgu223 ();
69+
}
70+
}

SGU/281.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import java.io.BufferedInputStream;
2+
import java.util.ArrayList;
3+
import java.util.Collections;
4+
import java.util.Comparator;
5+
import java.util.Hashtable;
6+
import java.util.Scanner;
7+
8+
9+
public class Solution {
10+
11+
void sgu281 () {
12+
Hashtable <String, Integer> dic = new Hashtable <String, Integer> ();
13+
String s;
14+
ArrayList<String> t = new ArrayList<String> ();
15+
int n, i, k;
16+
Scanner in = new Scanner (new BufferedInputStream (System.in));
17+
n = in.nextInt ();
18+
for (i = 0; i < n; ++i) {
19+
s = in.next();
20+
dic.put (s, i);
21+
}
22+
int last = 0;
23+
for (k = 0; k < n; ++k) {
24+
s = in.next();
25+
t.add (s);
26+
last = Math.max (last, dic.get(s));
27+
if (last == k) {
28+
Collections.sort(t, new Comparator<String> () {
29+
public int compare (String a, String b) {
30+
return a.compareTo(b);
31+
}
32+
});
33+
for (String str : t)
34+
System.out.println(str);
35+
t.clear();
36+
}
37+
}
38+
}
39+
40+
public static void main(String[] args) {
41+
Solution sguSolver = new Solution ();
42+
sguSolver.sgu281 ();
43+
}
44+
}

0 commit comments

Comments
 (0)